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

原创 2006年05月26日 10:28:00

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

頁面中本來有一個Form1_onsubmit要驗証,又加上驗証控制的驗証:
<input type="image" name="ImageButton_Save" onclick="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源碼如下:
onsubmit="if (!ValidatorOnSubmit()) return false;" 
同樣加上了驗証控制生成的代碼

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

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

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

相关文章推荐

jquery.form.js解决opera冲突问题

  • 2015年09月08日 16:33
  • 33KB
  • 下载

springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题

http://blog.csdn.net/qq_22956867/article/details/51437905 springMvc 完美解决 multipart/form-data 方式提交请求 ...

DLL中窗体Form问题思考及解决方法

最近在公司写一个外壳程序,调用DLL插件把FORM嵌入到EXE中的一个PANEL中,其中遇到了不少的问题,大部分已经解决,还有几个至今没有找到解决方法,有待研究,也希望知道解决方法的富翁共享一下研究成...
  • ksrsoft
  • ksrsoft
  • 2013年04月07日 15:26
  • 1099

Dll Form MDI 的TAB问题的解决方法!

  • 2006年02月23日 09:05
  • 516KB
  • 下载

关于Ext.form.FormPanel的reset方法的问题

reset后仍然是第一次加载过数据后的状态,其实还是因为load和show的先后顺序的问题,所以我认为是个bug...

onMeasure简单方法 完美解决ListView与ScollView冲突问题!

近期做项目碰到ScrollView与Listview冲突的情况,查看了网上一些解决listview和scollView的冲突的方法,最终选择了重写onMeasure的方法来解决这个问题。 在此对各种方...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在Form中驗証控制與自己加的驗証方法沖突的問題解決
举报原因:
原因补充:

(最多只允许输入30个字)