我想要防止用戶在按backspace
或canc
時刪除文本框中的任何「/」字符。防止刪除文本框中的特殊字符
例如:
如果文本框的值是2014/09/
,並且用戶按下退格時,「/」字符將不被刪除。
我該怎麼做keyup
或evenets?
$("#textboxId").keyup(function(){
// any idea
});
我想要防止用戶在按backspace
或canc
時刪除文本框中的任何「/」字符。防止刪除文本框中的特殊字符
例如:
如果文本框的值是2014/09/
,並且用戶按下退格時,「/」字符將不被刪除。
我該怎麼做keyup
或evenets?
$("#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);
不起作用,刪除'/' – 2014-09-05 11:27:23
@AminJafari我沒有選擇jQuery庫,對不起。現在它工作正常。 – 2014-09-05 11:30:40
是的,它工作,完美! +1 – 2014-09-05 11:31:41
我已經使用字符串操作
做了這裏檢查我的小提琴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);
}
});
希望這有助於
此解決方案不起作用... – 2014-09-05 11:22:09
@MarcoBonelli預計作爲解決方案是在這方面的工作。你如何聲稱它不起作用? – Khaleel 2014-09-05 12:30:13
在這裏你去=>DEMO
(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用於識別光標當前位置的功能。
請注意,在反對所有其他答案和想法發現時,這將實際上像面具一樣工作,即使光標位於文本中間也不會被刪除!
你正在使它成爲一個非常複雜的實際mooooore。 – 2014-09-05 11:23:02
@MarcoBonelli是的,因爲我希望它在任何情況下都可以正常工作 – 2014-09-05 11:24:44
如果您將脫字符號放在開頭並使用CANC鍵,它將刪除所有文本... – 2014-09-05 11:32:00
你不想刪除'/'? – Khaleel 2014-09-05 10:25:17
我建議你使用[MASKED INPUT插件](http://digitalbush.com/projects/masked-input-plugin/)我認爲這就是你需要的 – Satpal 2014-09-05 10:26:10
@Khaleel是我不想刪除/ – 2014-09-05 10:27:34