创建多次使用的函数
Creating function to use many times
提前感谢您的帮助...我对 PHP 和 Javascript 真的很陌生 - 但我很享受这种体验。我在一个只需要接受正整数的表单上有 2 个字段,并使用 jQuery: what is the best way to restrict "number"-only input for textboxes? (allow decimal points) 中的代码和注释,我能够想出以下代码,如果切换到包含小数位,也会检查用户只输入了一位小数:
$(document).ready(function() {
$("#NoOfClients").keypress(function(event) {
// Backspace, tab, enter, end, home, left, right
// We don't support the del key in Opera because del == . == 46.
// Add 46 to ControlKeys for allowing decimal point
var controlKeys = [8, 9, 13, 35, 36, 37, 39];
// IE doesn't support indexOf
var isControlKey = controlKeys.join(",").match(new RegExp(event.which));
var hasDecimalPoint = (($(this).val().split('.').length-1)>0);
// Some browsers just don't raise events for control keys. Easy.
// e.g. Safari backspace.
if (!event.which || // Control keys in most browsers. e.g. Firefox tab is 0
(49 <= event.which && event.which <= 57) || // Always 1 through 9
(48 == event.which && $(this).attr("value")) || // No 0 first digit
(isControlKey && !hasDecimalPoint)) { // Opera assigns values for control keys.
return;
} else {
event.preventDefault();
}
});
$("#NoOfClientContacts").keypress(function(event) {
// Backspace, tab, enter, end, home, left, right
// We don't support the del key in Opera because del == . == 46.
// Add 46 to ControlKeys for allowing decimal point
var controlKeys = [8, 9, 13, 35, 36, 37, 39];
// IE doesn't support indexOf
var isControlKey = controlKeys.join(",").match(new RegExp(event.which));
var hasDecimalPoint = (($(this).val().split('.').length-1)>0);
// Some browsers just don't raise events for control keys. Easy.
// e.g. Safari backspace.
if (!event.which || // Control keys in most browsers. e.g. Firefox tab is 0
(49 <= event.which && event.which <= 57) || // Always 1 through 9
(48 == event.which && $(this).attr("value")) || // No 0 first digit
(isControlKey && !hasDecimalPoint)) { // Opera assigns values for control keys.
return;
} else {
event.preventDefault();
}
});
});
如您所见,这两个控件是相同的...我想做的是使按键功能成为一个独立的功能,这样我就可以在定义表单输入时包含它...但是我还没有从哪里开始的线索。
抱歉,如果我使用了错误的术语 - 但一直在学习。如果我设法解决(或接近),我会 post 在这里回答。
.keypress
接收函数作为参数,可以发送命名函数指针
function handleKey(event) {
// Backspace, tab, enter, end, home, left, right
// We don't support the del key in Opera because del == . == 46.
// Add 46 to ControlKeys for allowing decimal point
var controlKeys = [8, 9, 13, 35, 36, 37, 39];
// IE doesn't support indexOf
var isControlKey = controlKeys.join(",").match(new RegExp(event.which));
var hasDecimalPoint = (($(this).val().split('.').length-1)>0);
// Some browsers just don't raise events for control keys. Easy.
// e.g. Safari backspace.
if (!event.which || // Control keys in most browsers. e.g. Firefox tab is 0
(49 <= event.which && event.which <= 57) || // Always 1 through 9
(48 == event.which && $(this).attr("value")) || // No 0 first digit
(isControlKey && !hasDecimalPoint)) { // Opera assigns values for control keys.
return;
} else {
event.preventDefault();
}
}
使用:
$(document).ready(function() {
$("#NoOfClients").keypress(handleKey);
$("#NoOfClientContacts").keypress(handleKey);
});
是的,你可以试试下面的方法 -
function inputHandler(elem){
$(elem).keypress(function(event) {
// Backspace, tab, enter, end, home, left, right
// We don't support the del key in Opera because del == . == 46.
// Add 46 to ControlKeys for allowing decimal point
var controlKeys = [8, 9, 13, 35, 36, 37, 39];
// IE doesn't support indexOf
var isControlKey = controlKeys.join(",").match(new RegExp(event.which));
var hasDecimalPoint = (($(this).val().split('.').length-1)>0);
// Some browsers just don't raise events for control keys. Easy.
// e.g. Safari backspace.
if (!event.which || // Control keys in most browsers. e.g. Firefox tab is 0
(49 <= event.which && event.which <= 57) || // Always 1 through 9
(48 == event.which && $(this).attr("value")) || // No 0 first digit
(isControlKey && !hasDecimalPoint)) { // Opera assigns values for control keys.
return;
} else {
event.preventDefault();
}
});
}
您可以为多个输入调用此函数,如下所示 -
inputHandler('#NoOfClients');
inputHandler('#NoOfClientContacts');
提前感谢您的帮助...我对 PHP 和 Javascript 真的很陌生 - 但我很享受这种体验。我在一个只需要接受正整数的表单上有 2 个字段,并使用 jQuery: what is the best way to restrict "number"-only input for textboxes? (allow decimal points) 中的代码和注释,我能够想出以下代码,如果切换到包含小数位,也会检查用户只输入了一位小数:
$(document).ready(function() {
$("#NoOfClients").keypress(function(event) {
// Backspace, tab, enter, end, home, left, right
// We don't support the del key in Opera because del == . == 46.
// Add 46 to ControlKeys for allowing decimal point
var controlKeys = [8, 9, 13, 35, 36, 37, 39];
// IE doesn't support indexOf
var isControlKey = controlKeys.join(",").match(new RegExp(event.which));
var hasDecimalPoint = (($(this).val().split('.').length-1)>0);
// Some browsers just don't raise events for control keys. Easy.
// e.g. Safari backspace.
if (!event.which || // Control keys in most browsers. e.g. Firefox tab is 0
(49 <= event.which && event.which <= 57) || // Always 1 through 9
(48 == event.which && $(this).attr("value")) || // No 0 first digit
(isControlKey && !hasDecimalPoint)) { // Opera assigns values for control keys.
return;
} else {
event.preventDefault();
}
});
$("#NoOfClientContacts").keypress(function(event) {
// Backspace, tab, enter, end, home, left, right
// We don't support the del key in Opera because del == . == 46.
// Add 46 to ControlKeys for allowing decimal point
var controlKeys = [8, 9, 13, 35, 36, 37, 39];
// IE doesn't support indexOf
var isControlKey = controlKeys.join(",").match(new RegExp(event.which));
var hasDecimalPoint = (($(this).val().split('.').length-1)>0);
// Some browsers just don't raise events for control keys. Easy.
// e.g. Safari backspace.
if (!event.which || // Control keys in most browsers. e.g. Firefox tab is 0
(49 <= event.which && event.which <= 57) || // Always 1 through 9
(48 == event.which && $(this).attr("value")) || // No 0 first digit
(isControlKey && !hasDecimalPoint)) { // Opera assigns values for control keys.
return;
} else {
event.preventDefault();
}
});
});
如您所见,这两个控件是相同的...我想做的是使按键功能成为一个独立的功能,这样我就可以在定义表单输入时包含它...但是我还没有从哪里开始的线索。
抱歉,如果我使用了错误的术语 - 但一直在学习。如果我设法解决(或接近),我会 post 在这里回答。
.keypress
接收函数作为参数,可以发送命名函数指针
function handleKey(event) {
// Backspace, tab, enter, end, home, left, right
// We don't support the del key in Opera because del == . == 46.
// Add 46 to ControlKeys for allowing decimal point
var controlKeys = [8, 9, 13, 35, 36, 37, 39];
// IE doesn't support indexOf
var isControlKey = controlKeys.join(",").match(new RegExp(event.which));
var hasDecimalPoint = (($(this).val().split('.').length-1)>0);
// Some browsers just don't raise events for control keys. Easy.
// e.g. Safari backspace.
if (!event.which || // Control keys in most browsers. e.g. Firefox tab is 0
(49 <= event.which && event.which <= 57) || // Always 1 through 9
(48 == event.which && $(this).attr("value")) || // No 0 first digit
(isControlKey && !hasDecimalPoint)) { // Opera assigns values for control keys.
return;
} else {
event.preventDefault();
}
}
使用:
$(document).ready(function() {
$("#NoOfClients").keypress(handleKey);
$("#NoOfClientContacts").keypress(handleKey);
});
是的,你可以试试下面的方法 -
function inputHandler(elem){
$(elem).keypress(function(event) {
// Backspace, tab, enter, end, home, left, right
// We don't support the del key in Opera because del == . == 46.
// Add 46 to ControlKeys for allowing decimal point
var controlKeys = [8, 9, 13, 35, 36, 37, 39];
// IE doesn't support indexOf
var isControlKey = controlKeys.join(",").match(new RegExp(event.which));
var hasDecimalPoint = (($(this).val().split('.').length-1)>0);
// Some browsers just don't raise events for control keys. Easy.
// e.g. Safari backspace.
if (!event.which || // Control keys in most browsers. e.g. Firefox tab is 0
(49 <= event.which && event.which <= 57) || // Always 1 through 9
(48 == event.which && $(this).attr("value")) || // No 0 first digit
(isControlKey && !hasDecimalPoint)) { // Opera assigns values for control keys.
return;
} else {
event.preventDefault();
}
});
}
您可以为多个输入调用此函数,如下所示 -
inputHandler('#NoOfClients');
inputHandler('#NoOfClientContacts');