最近在使用jQuery UI的Dialog控件時發現如果在此控件放置表單,則所有表單均無法正常提交,具體表現為:
1.提交按鈕失效,點擊后無任何反應。
2.即便是使用其它手段使頁面產生提交,服務器端也無法取到Dialog中的表單數據。
第1種方法:
不 知jQuery UI的Dialog這樣設計是一項功能還是一個bug。為了在Dialog內實現正常的頁面提交,根據上述分析,我找到一個簡單的解決辦法——在 jQuery UI控件的“open”事件處理程序中將Dialog控件動態生成的HTML元素移到form元素內,代碼如下:
使用代碼:$("#dialog").parent().appendTo("/html/body/form[0]");
或者
open: function () {
$( " body > div[role=dialog] " ).appendTo( " form#aspnetForm " );
}
});
代碼中的“aspnetForm”是ASP.NET應用程序自動生成的當前頁面form元素ID,使用時你可以換成自己頁面的form ID。
第2種方法:
加入一個<div id="dialog_target"></div>這樣的DIV,然后把Dialog寫入這個DIV里面。
$("#dialog").parent().appendTo("#dialog_target");
第3種方法:
1、修改Dialog的JS代碼,把代碼添加到form中,而不是body里面
2、Dialog內部的自定義HTML不使用,而直接加入一個IFRAME,把里面的HTML移到另外的頁面中,再與父頁面進行交互就OK(我使用的就是這種方法,這樣這些獨立出來的代碼還可以復用
第2種方法,服務器事件可以響應,效果也不錯,可以優先考慮。