ASP.NET 的服務器控件回發是使用這一段JS代碼:
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
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 (!theForm.onsubmit || (theForm.onsubmit() != false)) {
...
}
這句話了。
於是把添加事件寫成
程式碼如下:
程式碼如下:
$ ("form:first")
.get(0).onsubmit = function () {
... }; 就可以啦。 另外,用JQuery的 submit([[data],fn]) 新增的事件是可以用 $().submit() 觸發的。