我不想允许在文本框中输入、复制和粘贴十进制值和字母表。我可以输入负值。但是负号(“- ”)应该总是在开头。请看下面的 fiddle fiddle 。在这个 fiddle 中,它不允许十进制值和字母表。但是如果我像这样复制并粘贴“22.50”,它就会取十进制值。我该如何限制它。
我的需求,
1) 只允许数字(正数和负数)。
2) “-”符号应该在开头。中间或某处不允许。
3) 字母不应该允许甚至复制粘贴。
4) 我可以复制粘贴数字,如“2222”和“-2222”。但不是字符和小数。
var input = document.getElementById("myInput");
input.onkeypress = function(e) { e = e || window.event;
var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
// Allow non-printable keys
if (!charCode || charCode == 8 /* Backspace */ ) {
return;
}
var typedChar = String.fromCharCode(charCode);
// Allow numeric characters
if (/\d/.test(typedChar)) {
return;
}
// Allow the minus sign (-) if the user enters it first
if (typedChar == "-" && this.value == "") {
return;
}
// In all other cases, suppress the event
return false;
};
<input type="text" maxlength="10" id="myInput">
请帮我做这件事。
最佳答案
您可以使用 jquery 来监听输入字段的变化
$('#myInput').bind('input', function(e) {
//handle the input text here
});
如果您不想在字符串包含无效文本时不显示任何内容,可以将输入字段的值设置为空
$("#myInput").val("");
更新:
这是演示
$('#myInput').bind('input', function(e) {
var str = $("#myInput").val();
var dec = str.indexOf(".");
var first_char = str.charAt(0);
var isNumber = true;
var haveDecimal = false;
if (first_char == '-' || !isNaN(first_char)) {
for (i=1; i<str.length; i++) {
if(isNaN(str.charAt(i)) && str.charAt(i) != '.') {
isNumber = false;
break;
}
}
}
else {
isNumber = false;
}
if(dec != -1 && isNumber) {
str = str.substring(0, str.indexOf("."));
}
if (isNumber) {
$("#myInput").val(str);
}
else {
$("#myInput").val("");
}
});
JSFiddle:http://jsfiddle.net/7XLqQ/99/
关于javascript - 复制和粘贴时不允许在文本框中使用小数和文本值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35872217/