在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了。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

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

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

解决jquery在多插件中$冲突问题---jQuery.noConflict()方法

jQuery.noConflict()方法的定义和用法: 此方法可以将$的控制权转让给其他第一个实现它的函数库。 在实际应用中可能有这样的情况,那就是其他的js函数库也有对$的使用,这样的话可能导...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

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

近期做项目碰到ScrollView与Listview冲突的情况,查看了网上一些解决listview和scollView的冲突的方法,最终选择了重写onMeasure的方法来解决这个问题。 在此对各种方...

android引入开源项目方法,和解决android-support-v4.jar冲突问题

本例子自己建了一个项目,需要导入slidemenu,和paperslidetab开源项目。 只是一个例子,有时可能导入一个或多个开源项目,但方法相同 主项目的build-path ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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