2011-11-07 109 views
1

我的验证功能看起来像这样。JS验证问题

var fname = $("#fname").val(); 
var lname = $("#lname").val(); 

function validate() { 
    var isValid = true; 
    if (!fname) { 
      $("#fname").attr('class', 'invalid'); 
      isValid=false; 
     } 

    if (!lname) { 
     $("#lname").attr('class', 'invalid'); 
     isValid=false; 
    } 

它只是改变未填充的输入框的类。

我知道如果用户填充了一些输入,我可以为每个if编写else,并且回到默认值(class="valid")。但是,我怎么能创建一个通用的所有输入,以更改回默认类用户填充第一个验证错误后的输入?

+0

您可以用'addClass'方法。加上'invalid'类对象'$( 'your_selector')。addClass( '无效')'和验证后,只需使用'$( 'your_selector')。removeClass( '无效')' –

回答

1

这是很好的Tural!但是,为什么你的代码中的多余处理?这会增加不必要的压力。既然你,为你“解决”,将“有效”类添加到所有的输入型文本或密码,只需添加到实际的输入元素在直线代码:

<input class='valid' ..... /> 

现在,回到你原来的验证:为什么不把它普及?:

function validate(formField) { 
    if !formField $('#'+formField).removeClass('valid').addClass('invalid'); 
} 

或什么的那一脉...

+0

我已经添加了有效的类+阅读我的回答,再一次。这是按键的功能,有效的“类所有的输入型文本或密码‘’将增加” - 只有当用户按下键 –

+0

还如何让你的工作职能也将增加有效类? –

+0

其中一种方式是:form .... onSubmit ='validateIt(this);'并验证它将通过表单中的项目并发送每个项目进行验证(项目)。例如:function validateIt(formID){for each ... validate(item)...} –

1

您可以假定一切都是有效的,然后试着反驳,否则,你可以尝试,以证明其有效性。下面采用第一种方法,并将所有类设置为“有效”以与其保持一致。

function validate() { 
    // Get the current form input state. 
    var fname = $("#fname"); 
    var lname = $("#lname"); 

    // Assume everything valid until proven otherwise. 
    var isValid = true; 
    fname.attr('class', 'valid'); 
    lname.attr('class', 'valid'); 

    if (!fname.val()) { 
    fname.attr('class', 'invalid'); 
    isValid=false; 
    } 

    if (!lname.val()) { 
    lname.attr('class', 'invalid'); 
    isValid=false; 
    } 

    return isValid; 
} 
0

好的。我找到了方式

$('input[type="text"],input[type="password"]').keypress(function() { 
     $(this).attr('class', 'valid'); 
});