你好我试图比较2个不同输入中的内容。
$(document).ready(function() {
$('#pc').keydown(function() {
if ($('#ps').val() == $('#pc').val()) {
alert("it worked ");
}
});
});

<form id="identicalForm" class="form-horizontal" action="userSignup.php" method="post">
<fieldset>
<div id="legend">
<legend class="">Register</legend>
</div>
<div class="control-group">
<label class="control-label" for="email">E-mail</label>
<div class="control-group">
<label class="control-label" for="password">Password</label>
<div class="controls">
<input id="ps" name="password" placeholder="" class="form-control input-lg" type="password">
<p class="help-block">Password should be at least 6 characters</p>
</div>
</div>
<div class="control-group ">
<label class="control-label" for="password_confirm">Password (Confirm)</label>
<div class="controls">
<input id="pc" name="password_confirm" placeholder="" class="form-control input-lg" type="password">
<p class="help-block">Please confirm password</p>
</div>
</div>
</fieldset>
</form>
&#13;
这是网页的半精简版。包含在页面的顶部。如果我将警报放在if之外,每次我输入该输入框时都会弹出警报。但如果我尝试比较两个输入字段,当它们都输入相同的密码时,不会弹出任何内容。从我从其他SO帖子看到的这样,它应该工作!我仍然是js的新手,所以我可能完全在想这个。
答案 0 :(得分:2)
它不使用keydown
事件的原因是因为事件仅在键关闭时触发。换句话说,事件在值更新之前被触发。您将12345
与1234
进行比较,即使值相同,也不会记录按下的最后一个字符。
使用input
或keydown
事件,而不是使用keyup
事件:
$('#pc').on('input', function() {
if ($('#ps').val() === $('#pc').val()) {
console.log("it worked ");
}
});
密钥启动时会触发keyup
事件,这意味着实际更新了元素的值。同样,input
事件的行为方式也相同,因为值会在值发生变化时触发。此外,input
事件还将捕获粘贴事件(可能有用)。
答案 1 :(得分:2)
而不是在按下密钥之前实际执行的keydown
,而是使用blur
或keyup
:
$('#pc').on('blur', function() {
if ($('#ps').val() == $('#pc').val()) {
console.log("it worked ");
}
});
答案 2 :(得分:2)
使用keyup
事件。还尝试使用===
来比较值,因为我们知道值将是文本类型,并且在比较之前不需要显式转换。
$(document).ready(function () {
$('#pc').keyup(function () {
if ($('#ps').val() === $('#pc').val()) {
alert("it worked ");
}
});
});
当用户在键盘上释放键时,keyup
事件将发送到元素。
Here是一个工作样本