Regexp替换输入字段中的符号
Regexp replace symbols in input field
我有一个输入字段和一个带有regexp的代码,使它只能输入数字
$('input').keyup(function () {
this.value = this.value.replace(/[^0-9]/g,'');
});
但是,当有人试图编辑字段中间的符号时,光标会放在字段的末尾。这使得编辑变得困难,因为您必须删除要编辑的符号后面的所有符号。
一个简单的演示:
http://jsfiddle.net/NehmP/有人能帮我修一下吗?
只有当新字符串与旧字符串不同时才应该进行替换:
$('input').keyup(function () {
var v = this.value.replace(/[^0-9]/g,'');
if (v!=this.value) this.value = v;
});
这样,只要值是有效的,光标就不会被放在末尾。
演示您应该尝试一些类型的输入屏蔽插件,例如,maskedInput。
$("input").mask("9999"); // People will only be able to type numbers of 4 chars long!
$("input").mask("9?999"); // People will only be able to type numbers from 1 to 4 chars long!
使用此代码,即使值无效,光标也不会放在单词的末尾。它是dystroy的解决方案和我在互联网上找到的代码的组合。我认为它仍然有很多缺陷,太长了,但也许它仍然可以帮助别人……非常感谢你们:)
function doGetCaretPosition (ctrl) {
var CaretPos = 0;
// IE Support
if (document.selection) {
ctrl.focus ();
var Sel = document.selection.createRange ();
Sel.moveStart ('character', -ctrl.value.length);
CaretPos = Sel.text.length;
}
// Firefox support
else if (ctrl.selectionStart || ctrl.selectionStart == '0'){
CaretPos = ctrl.selectionStart;
}
return (CaretPos);
}
function setCaretPosition(ctrl, pos){
if(ctrl.setSelectionRange){
ctrl.focus();
ctrl.setSelectionRange(pos,pos);
}else if (ctrl.createTextRange) {
var range = ctrl.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
var remember;
$('input').keyup(function () {
remember = doGetCaretPosition(this);
var v = this.value.replace(/[^0-9]/g,'');
if (v!=this.value) {
this.value = v;
setCaretPosition(this,remember - 1)
};
})
和jsfiddle
你不应该给别人添麻烦。你想做的事情超出了javascript的范围,应该由浏览器/操作系统处理。
如果你向某人展示一个文本框,他们希望能够在里面输入任何东西(除了在某些情况下,例如在手机上,可以定义一个特定的键盘)。
用上下文敏感的消息简单地通知用户错误的输入,并允许用户以他们熟悉的方式自行更正,这是一种更好的方法。
如果你试图干扰输入法本身,很可能会造成混乱和挫折。此外,在一系列设备上进行测试将产生数不清的怪癖。
而且,验证应该在服务器上执行,因为客户端验证可以被操纵。
客户端的验证应该只是为了方便用户。
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 而循环只设置php中输入字段中的第一个值
- 在输入字段中将最小金额设置为
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- HTML 符号代码在输入字段中无法正常工作
- 将文本区域字段限制为大写字母、数字和&符号与jQuery
- JavaScript:限制字段-不能删除特殊符号
- 如何检查数字输入字段中是否输入了字母字符或符号
- 禁用输入字段中的符号和非字母
- Regexp替换输入字段中的符号
- 从字段中删除不需要的符号和大写字母
- 如何向字段添加美元符号而不将其包含在值中
- 是否有任何方法从IE浏览器的输入字段中删除交叉符号
- 输入密码字段-用图像代替符号
- 在不可编辑字段中显示插入符号位置
- 用重音符号javascript读取json字段
- 获得插入符号的位置(字符索引)在输入字段上掉落事件(FF, Chrome)
- 需要帮助,以显示不同的字段与帮助项目符号在HTML表单