jQuery UI Dialog控件中的表單無法正常提交的解決方法
更新時間:2010年12月19日 22:02:47 作者:
研究了頁面源碼后發(fā)現(xiàn),jQuery UI Dialog控件初始化時動態(tài)生成的HTML元素被添加到頁面的尾部、form元素的后面,而原始的Dialog模板部分(其內(nèi)包含表單元素)也被移到了 動態(tài)生成的HTML元素內(nèi)。
最近使用jQuery UI的Dialog控件時發(fā)現(xiàn)如果在此控件放置表單,則所有表單均無法正常提交,具體表現(xiàn)為:
1.提交按鈕失效,點(diǎn)擊后無任何反應(yīng)。
2.即便是使用其它手段使頁面產(chǎn)生提交,服務(wù)器端也無法取到Dialog中的表單數(shù)據(jù)。
研究了頁面源碼后發(fā)現(xiàn),jQuery UI Dialog控件初始化時動態(tài)生成的HTML元素被添加到頁面的尾部、form元素的后面,而原始的Dialog模板部分(其內(nèi)包含表單元素)也被移到了 動態(tài)生成的HTML元素內(nèi)。也就是說,原先在form內(nèi)的表單在Dialog初始化后就被移到form外了,這就導(dǎo)致了Dialog模板內(nèi)表單全部失效。
不知jQuery UI的Dialog這樣設(shè)計是一項(xiàng)功能還是一個bug。為了在Dialog內(nèi)實(shí)現(xiàn)正常的頁面提交,根據(jù)上述分析,我找到一個簡單的解決辦法——在jQuery UI控件的“open”事件處理程序中將Dialog控件動態(tài)生成的HTML元素移到form元素內(nèi),代碼如下:
$("#dlg").dialog({
open: function () {
$("body > div[role=dialog]").appendTo("form#aspnetForm");
}
});
代碼中的“aspnetForm”是ASP.NET應(yīng)用程序自動生成的當(dāng)前頁面form元素ID,使用時你可以換成自己頁面的form ID。
1.提交按鈕失效,點(diǎn)擊后無任何反應(yīng)。
2.即便是使用其它手段使頁面產(chǎn)生提交,服務(wù)器端也無法取到Dialog中的表單數(shù)據(jù)。
研究了頁面源碼后發(fā)現(xiàn),jQuery UI Dialog控件初始化時動態(tài)生成的HTML元素被添加到頁面的尾部、form元素的后面,而原始的Dialog模板部分(其內(nèi)包含表單元素)也被移到了 動態(tài)生成的HTML元素內(nèi)。也就是說,原先在form內(nèi)的表單在Dialog初始化后就被移到form外了,這就導(dǎo)致了Dialog模板內(nèi)表單全部失效。
不知jQuery UI的Dialog這樣設(shè)計是一項(xiàng)功能還是一個bug。為了在Dialog內(nèi)實(shí)現(xiàn)正常的頁面提交,根據(jù)上述分析,我找到一個簡單的解決辦法——在jQuery UI控件的“open”事件處理程序中將Dialog控件動態(tài)生成的HTML元素移到form元素內(nèi),代碼如下:
復(fù)制代碼 代碼如下:
$("#dlg").dialog({
open: function () {
$("body > div[role=dialog]").appendTo("form#aspnetForm");
}
});
代碼中的“aspnetForm”是ASP.NET應(yīng)用程序自動生成的當(dāng)前頁面form元素ID,使用時你可以換成自己頁面的form ID。
相關(guān)文章
jQuery函數(shù)的第二個參數(shù)獲取指定上下文中的DOM元素
這篇文章主要介紹了jQuery函數(shù)的第二個參數(shù)獲取指定上下文中的DOM元素,需要的朋友可以參考下2014-05-05
jquery中獲得$.ajax()事件返回的值并添加事件的方法
如果想獲得$.ajax()中返回的值,直接用在success:funciton(){return xx} 是不可以的,要想獲得xx的值,要在script中,使用全局變量。利用全局變量引出xx的值。2010-04-04
基于jQuery實(shí)現(xiàn)Div窗口震動特效代碼-代碼簡單
本文給大家介紹基于jiquery實(shí)現(xiàn)div窗口震動特效代碼,需要的朋友可以參考下2015-08-08
Jquery中使用show()與hide()方法動畫顯示和隱藏圖片
以前我們在js中如果要隱藏顯示一個元素我們需要利用display等于none來設(shè)置并且還沒有效果,現(xiàn)在在jquery中有了hide();我們可以利用hide()方法來操作,希望本文章給大家所有幫助。2015-10-10
基于jQuery模擬實(shí)現(xiàn)淘寶購物車模塊
這篇文章主要介紹了如何利用jQuery+css+html模擬實(shí)現(xiàn)淘寶購物車模塊,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動手嘗試一下2022-03-03
ajax 文件上傳應(yīng)用簡單實(shí)現(xiàn)
今天看到一個jquery插件jquery.fileupload.v.1.5.0,自己試著結(jié)合java做了一個ajax的文件上傳小應(yīng)用2009-03-03

