防止删除文本框中的特殊字符
Prevent removing special character in textbox
我想防止用户在按下backspace
或canc
时删除文本框中的任何"/"字符。
例如:
如果文本框值为2014/09/
,并且用户按退格键,则不会删除"/"字符。
我如何在keyup
或keydown
的晚上做到这一点?
$("#textboxId").keyup(function(){
// any idea
});
您有三种情况:
- 用户按下
backspace
并删除光标前的字符 - 用户按下
canc
并删除光标后的字符 - 用户选择文本并按下
backspace
或canc
并删除所选文本
所以你必须解决所有这些不同的情况。
此代码将起作用:
$('#textareaId')[0].addEventListener("keydown", function(e) {
var start = this.selectionStart,
end = this.selectionEnd,
value = this.value,
key = e.keyCode;
if (key == 8 && value[start-1] == '/') e.preventDefault();
if (key == 46 && value[start] == '/') e.preventDefault();
if ((key == 8 || key == 46) && value.substring(start, end).indexOf('/') != -1) e.preventDefault();
}, false);
工作示例:http://jsfiddle.net/MeBeiM/7hdb3472/1
我已经使用字符串操作完成了
在这里检查我的小提琴http://jsfiddle.net/7ek11cfs/21/
$('textarea').keydown(function(e) {
textValue = $(this).val();
});
$('textarea').keyup(function(e) {
if(textValue.charAt(textValue.length-1)=='/')
{
$('textarea').val(textValue);
}
});
希望这能帮助
到此为止=>演示
(function ($, undefined) {
$.fn.getCursorPosition = function() {
var el = $(this).get(0);
var pos = 0;
if('selectionStart' in el) {
pos = el.selectionStart;
} else if('selection' in document) {
el.focus();
var Sel = document.selection.createRange();
var SelLength = document.selection.createRange().text.length;
Sel.moveStart('character', -el.value.length);
pos = Sel.text.length - SelLength;
}
return pos;
}
})(jQuery);
$("#textboxId").keydown(function(e){
var currentPos=$(this).getCursorPosition();
var lastChar=$(this).val().substr((currentPos- $(this).val().length)- 1);
if(e.which==8 && lastChar.match(/^'//g) ){
e.preventDefault();
return false;
}
});
我从THIS ANSWER中获得了一些帮助,用于识别光标当前位置的函数。
注意,与找到的所有其他答案和想法相反,这实际上就像一个面具,即使光标在文本中间也不会被删除!
相关文章:
- 必须检查长度,并在文本框中允许一些特殊字符
- Javascript:包括特殊字符的文本选择
- 通过引导验证器限制文本框中的特殊字符
- 跳过用户输入的文本字符串中的特殊字符,并在 Javascript 中的每个单词后添加连字符
- 为什么不用特殊字符替换选择文本,以及如何删除此特殊字符
- 如何使用javascript/jquery/c#搜索和选择包含特殊字符的文本
- JavaScript 防止文本区域中的特殊字符
- 使用正则表达式捕获 2 个特殊字符之间的文本
- 在 jquery te 文本编辑器中添加特殊字符选项
- 不允许在文本框验证中使用特殊字符
- 从文本中删除某些特殊字符
- 将文本上的特殊字符替换为 jquery
- 如何使用特殊字符(%,等)将字符串从文本区域更新到mysql表
- 如何使此代码更有用(防止文本区域中的特殊字符)
- 如何在特殊字符的输入文本中使用annyang
- jquery函数根据特殊字符更改文本颜色
- 将标签文本从.resx更改为具有特殊字符的问题
- 当文本具有特殊字符时,offsetWidth计算不正确
- Javascript和密钥代码,防止文本框中出现特殊字符
- 防止删除文本框中的特殊字符