我有以下HTML:
<td>
<input type="text" id="txtID" maxlength="16" />
</td>
<td>
<input type="button" value="Search" id="btnSearch" disabled="disabled"/>
</td>
#btnSearch
#txtID
#btnSearch
我有三个jQuery函数:
$("#txtID").bind("propertychange keyup input paste", function () {
var mid = $.trim(this.value);
if (mid.length < 6) {
$("#btnSearch").attr("disabled", true);
}
else {
$("#btnSearch").removeAttr("disabled");
}
});
myself._findjcontrol("txtID").keypress(function (event) {
if (event.keycode == 13) {
myself._findjcontrol("btnSearch").click();
return false;
}
});
$("#txtID").keydown(function (e) {
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13]) !== -1 ||
(e.keyCode == 65 && e.ctrlKey === true) ||
(e.keyCode >= 35 && e.keyCode <= 39)) {
return;
}
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault();
}
});
如何将上述三个功能合并为一个?
答案 0 :(得分:0)
由于您的第一个bind
函数正在侦听多个事件,因此您可以通过一些小的修改来移动其中的另外两个函数:
keyup
更改为keypress
(无论如何,这是首选)e
而不是event
醇>
$("#txtID").bind("propertychange keypress input paste", function (e) {
var mid = $.trim(this.value);
if (mid.length < 6) {
$("#btnSearch").attr("disabled", true);
}else {
$("#btnSearch").removeAttr("disabled");
}
if (e.keycode == 13) {
myself._findjcontrol("btnSearch").click();
return false;
}
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13]) !== -1 || (e.keyCode == 65 && e.ctrlKey === true) || (e.keyCode >= 35 && e.keyCode <= 39)) {
return;
}
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault();
}
});