【发布时间】:2010-12-17 08:21:53
【问题描述】:
<input type="text" id="target" />
jQuery 怎么做?
【问题讨论】:
标签: javascript jquery input
<input type="text" id="target" />
jQuery 怎么做?
【问题讨论】:
标签: javascript jquery input
虽然由于使用了键码,所以有点脆弱......以下会更直观,因为它完全不可能输入非数字:
$("#target").keydown(function(event) {
return ( event.keyCode < 32 || // Control characters
( event.keyCode >= 48 && event.keyCode <= 57 ) || // Numbers
event.keyCode == 127 ); // Delete key
});
注意补充:这实际上不是最好的方法......因为(windows)ALT + [num] 132可以在框中输入ä。它应该与 keyup 事件结合,以确保没有输入任何字符,就像这样,Combined:
$("#target").keydown(function(event) {
return ( event.keyCode < 32 || // Control characters
( event.keyCode >= 48 && event.keyCode <= 57 ) || // Numbers
event.keyCode == 127 ); // Delete key
});
$("#target").keyup(function(event) {
event.target.value = event.target.value.replace(/[^0-9]/g, "");
});
此外,这不适用于此处的 num-pad-numbers,因此它肯定比简单的 blur() 事件更脆弱。
【讨论】:
$("#target").blur(function(event) {
event.target.value = event.target.value.replace(/[^0-9]/g, "");
});
这也可以:
$("#target").keypress(function(event) {
event.target.value = event.target.value.replace(/[^0-9]/g, "");
});
【讨论】:
{^0-9],应该是[^0-9]。
$('input[type=text].someclass').blur(function(event)
{
event.target.value = event.target.value.replace(/[^0-9]/g, "");
});
【讨论】:
function onlyNumbers(evt) {
var e = evt;
if(window.event){ // IE
var charCode = e.keyCode;
} else if (e.which) { // Safari 4, Firefox 3.0.4
var charCode = e.which;
}
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
【讨论】:
if (!$.browser.mozilla) {
if (event.keyCode && (event.keyCode < 48 || event.keyCode > 57))
event.preventDefault();
}
else {
if (event.charCode && (event.charCode < 48 || event.charCode > 57))
event.preventDefault();
}
【讨论】: