ASP.NET 的服務器控件回發是使用這一段JS代碼:
. 代碼如下:
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
今天遇到的問題是想在服務器端控件回發之前給其中一個隱藏域賦值,以給服務器傳值。
於是就用JQuery的 submit([[data],fn]) 方法添加了一個事件,但發現不起作用。
我用 $("form:first").submit() 試了一下,發現能觸發事件函數。
怎麼回事呢?查了一下資料發現js的原生函數 void submit() 並不觸發submit事件。這也是為什麼上面那段代碼裡有
. 代碼如下:
if (<span style="color:#006600">!theForm.onsubmit || (theForm.onsubmit() != false</span>)) {
...
}
這句了。
於是把添加事件寫成
. 代碼如下:
$("form:first")<span style="color:#006600">.get(0)</span>.onsubmit = function () {
...
};
就可以啦。
另外,用JQuery的 submit([[data],fn]) 添加的事件是可以用 $().submit() 觸發的。