2012-05-18 99 views
0

两个输入的密码应该是相同的,我想在它们不匹配时显示通知。目标是在键入时显示通知,而不是在按下保存按钮后显示。两个密码字段的jQuery验证

我是JavaScript新手,我也尝试过函数名函数()表示法。

以下JS:

function updateError (error) { 
if (error == true) { 
    $(".error").hide(500); 
}else{ 
$(".error").show(500); 
} 
}; 

function checkSame() { 
    var passwordVal = $("input[name=password-check]").val(); 
    var checkVal = $("input[name=password]").val(); 
    if (passwordVal == checkVal) { 
    return true; 
    } 
    return false; 
}; 


document.ready(function(){ 
$("input[name=password-check]").keyup(function(){updateError(checkSame());}); 
$("input[name=password]").keyup(function(){updateError(checkSame());}); 
}); 

和HTML:

@Html.Password("password") 
@Html.Password("password-check")  
<span class="error">Errortext</span> </td></tr> 

,但它不工作.. THX!

编辑: 现在我已经改变了JS代码:

$( “输入[名称=密码检查]”)KEYUP(函数(){updateError(checkSame());}) ; (“input [name = password]”)。keyup(function(){updateError(checkSame());});

- >现在的作品,但只有一次,用户输入匹配密码后,验证停止工作

解决,问题是报价:

$("input[name='password-check']").keyup(function(){updateError(checkSame());}); 
$("input[name='password']").keyup(function(){updateError(checkSame());}); 
+1

好。但问题是什么? – VisioN

+0

没有任何反应,如果我更改密码.. – MemLeak

回答

1

你正在做相反

if (error == true) { 
    $(".error").show(500); 
}else{ 
 $(".error").hide(500); 
} 

按照注释编辑:

尝试将名称放在引号中l ike

$("input[name='password-check']").keyup(function(){updateError(checkSame());}); 
$("input[name='password']").keyup(function(){updateError(checkSame());}); 
+0

非常感谢你,问题在引用! – MemLeak

+0

很高兴你的工作:) – mprabhat

0

在checkSame中,您可能希望使用indexOf来检查passwordVal是否包含checkVal,因为在输入时密码不相等。

if (passwordVal.indexOf(checkVal)>-1 || checkVal.indexOf(passwordVal)>-1 ) { 
    return true; 
    } 
+0

请注意,indexOf不支持任何地方:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf –

0

正如int2000所说,在keyup上启动checkSame似乎很奇怪,但如果它是你想要的,那么确定。 尝试改变你的checkSame功能如下:

function checkSame() { 
    var passwordVal = $("input[name=password-check]").val(); 
    var checkVal = $("input[name=password]").val(); 
    if (passwordVal == checkVal) { 
    return false; 
    } 
    return true; 
}; 

记住,你传递的结果checkSame到updateError,所以如果密码是相同的,你有没有错误。