本人在开发某一AJAX技术网站时遇到一问题,页面中包含一个updatepanel,其中有2个textbox,2个分别验证textbox的验证控件,1个button,其中通过一个textbox的onkeyUp属性调用了一段JS
function checkPassChange()
{
    
if($Son("UserConfirmPassT").value != "" && $Son("UserPassT").value != "")
     {
         $Son(
"UserEditB").disabled = false;
     }
    
else $Son("UserEditB").disabled = true;
}

    该JS表示当两个BOX都不为空的时候,把button的enable为true,而按扭原始的设置我定了enable=false,于是错误出现了,具体表现为按扭按下后,虽然验证控件已经提示错误,但按扭事件仍然回发并执行.验证控件失效了.

    经过反复研究,原因原来不在验证控件上,而在按扭的那个enable设置上,如果一开始就设定它为false,那么就算通过JS将其转换为true,验证 一样会失效,要解决这个问题,必须让button在一开始的时候enable就为true,而我页面需要一开始的时候button为不可操作状态,而是通 过上面的JS来变化它的enable,于是用了下面的代码

window.onload = function()
{
     $Son(
"UserEditB").disabled = true;
}

    然后把button的enable值设为true或默认不设置,这样,页面加载后,button实际是enable=true的,只是利用JS变成了false,

   通过这点可以表明,验证控件要想起作用,button的enable以及和JS的联合运作很重要,JS有时只起到外观作用的变化,并没让HTML源码实际改变,而AJAX似乎很遵循这些细节,因此请仔细检查控件、控件属性以及JS的互动吧。

   另外说点,如果把验证控件的EnableClientScript="False"再放入updatepanel,那么一定不会执行验证

posted on 2009-02-10 11:13  许维光  阅读(447)  评论(0)    收藏  举报