2011-09-23 60 views
2

我不知道该怎么办,为什么它不工作这是我第一次尝试这样的事情。问题jQuery。。提交()和变量

这里是它的一个小提琴http://jsfiddle.net/ProjectV1/LVPtN/

你会发现在JavaScript中我有一个变种错误,默认为false。

如果出现错误,则为真。

我在窗体上的每个输入旁边都显示了错误的值。

如果变量错误是错误的,它应该提交表单并且不应该为false。

发生错误时出现问题,然后纠正表单不会提交。

看小提琴。该表单直接用于Google测试。

+1

我认为你需要做一个关联数组与要检查有关错误输入每一个元素。然后,在执行提交事件时,可以遍历数组查看哪些输入处于错误状态。如果有,请阻止提交完成。 –

+0

好的,现在试试这个,谢谢 –

回答

1

我觉得,问题是error在函数里面会被调用模糊。当函数调用完成后,它就不确定了。这笔交易是变量应该是全球性的。你需要把这个$(document).ready()上述这应该工作:

var error = false; 

$('#joinForm input').blur(function() { 
    var id = $(this).attr('id'); 
    var val = $(this).val(); 
    if (id == 'email') { 
     $('#emailMsg').hide(); 
     if (val == '') { 
      error = true; 
      $('#' + id).after('<div id="emailMsg" class="error">' + error + '</div>'); 
     } 
     else { 
      $('#' + id).after('<div id="emailMsg" class="success">' + error + '</div>'); 
     } 
    } 
    if (id == 'cemail') { 
     $('#cemailMsg').hide(); 
    } 
    if (id == 'password') { 
     $('#passwordMsg').hide(); 
     if (val == '') { 
      error = true; 
      $('#' + id).after('<div id="passwordMsg" class="error">' + error + '</div>'); 
     } 
     else { 
      $('#' + id).after('<div id="passwordMsg" class="success">' + error + '</div>'); 
     } 
    } 
    if (id == 'cpassword') { 
     $('#cpasswordMsg').hide(); 
    } 
    if (id == 'username') { 
     $('#usernameMsg').hide(); 
     if (val == '') { 
      error = true; 
      $('#' + id).after('<div id="usernameMsg" class="error">' + error + '</div>'); 
     } 
     else { 
      $('#' + id).after('<div id="usernameMsg" class="success">' + error + '</div>'); 
     } 
    } 
    $('#joinForm').submit(function(){ 
     if (error == true) { 
      return false; 
     } 
     else { 
      return true; 
     } 
    }); 
}); 
+0

试过它没有运气:/更新

+0

好吧,我尝试了你的想法后,我意识到,如果有错误因为变量没有在函数中设置,所以之前发生。所以我更新了它,以便error = false;在所有成功的状态下,它现在可以与在函数外声明的变量一起使用,值为null ...感谢您的输入。 –

+0

根据我的说法,验证需要被放入一个不同的函数,它返回true或false。在模糊处,调用此函数更新错误变量。在validate()函数中,保留一个临时变量,该变量最初表示为true,如果有任何错误,它应该继续前进,但不允许任何其他字段验证将其值从false更新为true。最后返回temp变量的状态。 –