JavaScript:限制字段-不能删除特殊符号
JavaScript: Restricting fields - cannot remove special symbols
我试图通过在setInterval中检查输入文本并删除非数字字符来将其限制为数字。现在到目前为止,这个工作相对来说还可以,但我无法删除"特殊符号"。例如,如果我输入西班牙重音符号"或像"这样的符号,它们应该在一个字符上,它会重置字段,并且不会再次分配值,尽管该符号已从字符串中删除(如果我记录字符串,我可以看到它是)。
示例:
- 键入123a=>删除"a",输入包含123
- 键入123=>输入包含一个空字符串,尽管"text"字符串包含123并且具有3的长度
- 键入123并在其=>删除后粘贴,输入包含123
这似乎与特殊符号不是。。。自立(?),并且需要在接下来应该输入的字符上。一些想法如何解决?非常感谢。
我有以下HTML:
<body>
<input type="text" id="input_field">
</body>
以及JS:
$("#input_field").focus(function(e) {
console.log("got focus"+$(this).val());
var obj = this;
intID = setInterval(function() {restrictNumbers(obj)}, 10);
});
$("#input_field").blur(function(e) {
console.log("got blur")
clearInterval(intID);
});
function restrictNumbers(field) {
var text = $(field).val();
var caretPos;
var modified = false;
if(text.length > 0) {
for(var i=0; i<text.length; i++) {
if(isNaN(text.charAt(i))) {
modified = true;
caretPos = field.selectionStart - 1;
text = text.replace(text.charAt(i), "");
i--;
}
}
$(field).val(text);
if(modified) {
modified = false;
field.setSelectionRange(caretPos, caretPos);
}
}
}
JSfiddle示例:http://jsfiddle.net/AvMZ5/
您可以使用这个:-
jQuery.fn.ForceNumericOnly =
function()
{
return this.each(function()
{
$(this).keydown(function(e)
{
var key = e.charCode || e.keyCode || 0;
// allow backspace, tab, delete, arrows, numbers and keypad numbers ONLY
// home, end, period, and numpad decimal
return (
key == 8 ||
key == 9 ||
key == 46 ||
key == 110 ||
key == 190 ||
(key >= 35 && key <= 40) ||
(key >= 48 && key <= 57) ||
(key >= 96 && key <= 105));
});
});
};
然后,您可以通过以下操作将其连接到您的控制上:
$("#yourTextBoxName").ForceNumericOnly();
来源:-https://gist.github.com/wholypantalones/3083362
相关文章:
- jQuery:为什么我的脚本不能删除类
- 使用拉斐尔JS;在全局级别创建“论文” - 我可以创建多个论文,但不能删除它们
- 定义可以'不能删除
- JavaScript:限制字段-不能删除特殊符号
- 不能删除列表项
- 似乎不能删除对象文字中的元素
- 为什么我不能删除这个对象的类/属性?
- 不能删除渐变(tweenJS)
- php和Js:不能删除cookie
- 不能删除数组项,总是删除错误的项
- 不能删除动态添加的脚本
- 为什么我不能删除每一行html的空白?
- 编辑器的图片标题不能删除,除非添加新的段落
- React Meteor教程不能删除this.props.post._id
- Bootstrap modal('hide')不能删除所有应用的属性属性
- AngularJS -不能删除小数点后的数字
- 只能添加dom元素,但不能删除它们
- jQuery克隆后不能删除节
- 在遗留的firebase中,以加号('+')字符作为Key的数据可以'不能删除
- Cookie可以存储,但不能删除