在Form中驗証控制與自己加的驗証方法沖突的問題解決

首先給一個建議:除非是很明確的服務器代碼錯誤,否則其它的所有的錯誤要看一下HTML源碼,發現很多人沒有這個習慣, 瀏覽器執行的是HTML源碼,因此客戶端任何情況,都可以在HTML源碼中得到反映。
這個問題很明顯是驗証失效,無非是在兩個地方,提交按鈕的onclick事件與Form的onsubmit,看源碼:

頁面中本來有一個Form1_onsubmit要驗証,又加上驗証控制的驗証:
<input type="image" name="ImageButton_Save" οnclick="return Form1_submit(); if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); "
注意這裡的return Form1_sumbit();是在服務器端中的代碼中通過這句加上的,原因是不能直接在aspx頁面中寫onclick事件(會被認作服務器事件)
this.ImageButton_Save.Attributes.Add("onclick","return Form1_onsubmit();");
初步判斷是這兩個驗証方法沖突,即隻要滿足第一個判斷,第二個就不管用了,是判斷順序有問題。

因此如果這裡把Form1_submit()放到後面是否就好了呢,嘗試將服務端的代碼改能如下:
this.ImageButton_Save.Attributes["onclick"] += "return Form1_onsubmit();");
仍不管用,看來驗証控制的代碼是後來加上去的。

最後考慮到驗証的另外一個地方:Form的onsubmit事件,查看HTML源碼如下:
οnsubmit="if (!ValidatorOnSubmit()) return false;" 
同樣加上了驗証控制生成的代碼

不過這裡可以在aspx頁面中直接將onsubmit寫上:
<form language="javascript" id="Form1" οnsubmit="return Form1_onsubmit();" method="post" runat="server">

然後最終生成的HTML源碼變成:
nsubmit="if (!ValidatorOnSubmit()) return false;return Form1_onsubmit();"
怎麼樣,我們自己加的Form1_onsubmit已經跑到後面了

再試一下效果,已經OK了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值