我打算用js做一些注册页面的验证,但是在判定输入框为空的时候,出现了问题:
我的代码:
1.aspx代码:<asp:TextBox ID="txtClinicName" runat="server" Width="270" MaxLength="20" onblur="isNull(this);">
</asp:TextBox>
<asp:TextBox ID="txtClinicStreet" runat="server" Width="270" MaxLength="30" onblur="isNull(this))" ></asp:TextBox>
2.js代码:
/**********是否为空************/
function isNull(obj) {    objvalue = trim(obj.value);    if (objvalue.length==0||objvalue.value=="") {        //alert("不能为空!");
        obj.focus();
        obj.style.background = "red";
        return false;
    } else {     obj.style.background = "white";
    
    }
}/********去除左右的空格***********/
function trim(str) {    return str.replace(/(^\s*)|(\s*$)/g, "");}我的代码的一个问题是:当两个以上的文本框没有值的时候,都发生onblur事件的时候,两个文本框会抢focus(),但是屏幕
只允许一个焦点啊,这就造成了无限次循环,所以我把focus()给注释掉了;
 我的本意是在onblue的时候就验证,不是在最后提交的时候,之前让文本框获得焦点也是为了阻止提交按钮提交空数据,注释了focus()我最后提交的时候,空文本框中的数据还是提交到服务器了。我需要的解答:如何在onblue的时候很快验证,并把验证的结果让提交按钮也知道,这样提交按钮可以根据各个文本框的验证结果阻止提交。(太啰嗦了,谢谢各位了)

解决方案 »

  1.   

    txtClinicStreet 这个  onblur="isNull(this))" 多了个括号 。
      

  2.   


    试了一下,但是onchange必须要文本框输入变化的时候才能触发,我不输入内容就没反应
      

  3.   

    我现在关心的问题是如何把各个文本框判断的false值对最后的提交按钮起到阻止提交的作用
      

  4.   

    button 然后点击做个遍历   看有没有false的  有就不给与提交 
      

  5.   


    那我可不可以弄个全局变量state=true,让所有的结果都和state与,一个false就可以全局否定
      

  6.   

    可以参照我写的简单的代码,你要得效果应该差不多可以实现<input type="text"  onblur="isNull(this)"/>
    <input type="text"  onblur="isNull(this)" />
    <script type="text/javascript">
    var isRedExist = false;
    function isNull(obj) {
        value = obj.value;
        if ((value.length==0||value.value=="")&&!isRedExist) {
            obj.focus();
            obj.style.background = "red";
    isRedExist = true;
        } else {
            obj.style.background = "white";
    isRedExist = false;
        }

    </script>