Javascript 使用两个输入字段将函数添加到.keyup()
我有一个密码字段和一个密码确认字段。我正在尝试将keyup添加到这两个字段中,以便无论何时有人开始输入其中一个字段,我都可以向他们显示密码是否匹配 我实现了一个有效的版本,但正如您所看到的,它并不理想Javascript 使用两个输入字段将函数添加到.keyup(),javascript,jquery,keyup,Javascript,Jquery,Keyup,我有一个密码字段和一个密码确认字段。我正在尝试将keyup添加到这两个字段中,以便无论何时有人开始输入其中一个字段,我都可以向他们显示密码是否匹配 我实现了一个有效的版本,但正如您所看到的,它并不理想 function comparePassword() { var password1 = $("#password1").val(); var password2 = $("#password2").val(); if (password1 != password2) { $
function comparePassword() {
var password1 = $("#password1").val();
var password2 = $("#password2").val();
if (password1 != password2) {
$(".divDoPasswordsMatch").html("Passwords do not match!");
}
else {
$(".divDoPasswordsMatch").html("Passwords match.");
}
$("#password1, #password2").keyup(comparePassword);
我不想在comparePassword函数中设置变量password1和password2。这部分是因为我需要多次使用这个函数。我想将这两个输入字段传递到keyup中,如下所示:
$("#password1, #password2").keyup(comparePassword($("#password1").val(), $("#password2").val()));
理想情况下,我希望comparePassword知道如何从password1和password2继承值,而无需再次指定:
$("#password1, #password2").keyup(comparePassword(this.value, this.value));
最后两个代码示例不起作用。我该怎么写
提前谢谢 您需要为处理此事件的事件创建一个处理程序。大概是这样的:
var keyupHandler = function() {
comparePassword($("#password1").val(), $("#password2").val());
};
$("#password1, #password2").keyup(keyupHandler);
代码示例不起作用的主要原因是它们都会立即调用函数,而不是在事件发生时调用。这就是处理程序所要处理的。您可以用这种方式重新排列代码。 //这将是比较任意两个不同字符串值的函数 函数比较PasswordPassword1、password2{ 如果password1!=password2{ $.divDoPasswordsMatch.htmlPasswords不匹配!; } 否则{ $.divDoPasswordsMatch.htmlPasswords匹配。; } } $document.readyfunction{ $password1,password2.keyup函数{ 比较密码$password1.val、$password2.val; }; } ;
您可以通过如下方式修改代码来实现您的目标:
var keyupHandler = function() {
comparePassword($("#password1").val(), $("#password2").val());
};
$("#password1, #password2").keyup(keyupHandler);
//在脚本开始时创建一次对所需DOM元素的引用
var pw1=$password1;
var pw2=$password2;
var pwMatch=$.divDoPasswordsMatch;
函数比较PasswordPassword1、password2{
如果password1!=password2{
pwMatch.htmlPasswords不匹配!;
}否则{
pwMatch.htmlPasswords匹配。;
}
}
$pw1,pw2.keyup=>{
//在keyup上传递值-不必担心再次在DOM中查询输入元素
比较密码pw1.val、pw2.val;
};
密码1:密码2:
Jquery的一个示例
//编写迷你JQuery插件
$.fn.isSamePasswords=函数{
返回此[0]。值===此[1]。值
}
//keyup示例
$password1,password2.keyup函数{
var pm=$password1,password2.isSamePasswords?密码匹配:密码不匹配!
$.divDoPasswordsMatch.htmlpm;
}
通过保存尽可能多的引用,可以使用缓存构造函数使流程尽可能少地密集。这也将在施工时将搬运器连接到适当的位置 函数密码显示,…sel{ this.fields=sel.mapfield=>$field; this.display=$display; this.toDisplay=msg=>this.display.htmlmsg; this.theSame=>newsetthis.fields.mapfield=>field.val.size==1; this.compare==>this.todisplayis.theSame?密码匹配:密码不匹配; this.fields.forEachfield=>field.keyuptis.compare; } Passwords.divdopasswords匹配,password1,password2;
您可能希望将密码字段存储在变量中,以使其运行更快,尤其是因为每次按键都会触发密码字段