$('input').keypress(function(e){
if(($(this).val().split('a').length - 1) > 0){
console.log($('input').val());
$('input').val($('input').val().replace('a', ''));
}
})
jsfiddle:http://jsfiddle.net/Ht8rU/
我想在输入中只有一个“a”。我检查长度a> 1然后从输入中删除“a”,但这不能正常工作。我想从此输入中仅删除第二个a。允许一个“a”。
答案 0 :(得分:2)
编辑哦,我现在看到......如果您只想保留第一个a
,可以试试这个:
$('input').keypress(function(e) {
var key = String.fromCharCode(e.which);
if (/a/i.test(key) && /a+/i.test(this.value)) {
e.preventDefault();
}
});
演示: http://jsfiddle.net/elclanrs/Ht8rU/6/
您必须检查当前输入的字母是否为a
:
if (String.fromCharCode(e.which) == 'a')
但这是一个简化版本。如果您可以使用val()
,则无需使用value
,特别是因为它可以使您的代码更清晰。此外,您可能需要检查A
或a
,以便正则表达式可能是更好的选择。这是代码:
$('input').keypress(function(e) {
var A = /a/gi,
letter = String.fromCharCode(e.which);
if (A.test(letter)) {
$(this).val(this.value.replace(A,''));
}
});
答案 1 :(得分:2)
我建议使用preventDefault来停止按键:
$('input').keypress(function(e) {
if (e.keyCode === 97 && $(this).val().split('a').length > 1) {
e.preventDefault();
}
});
答案 2 :(得分:0)
这段代码似乎很长,没有任何用处,但它确实有用。
$('input').keyup(function(e) {
var e = $(this),
val = e.val(),
aPos = val.indexOf('a'),
spl1 = val.substring(0, aPos + 1),
spl2 = val.substring(aPos, val.length).replace(/a/gi, ''),
v = spl1 + spl2;
e.val(v);
});
以下是working JSFiddle。
答案 3 :(得分:0)
我会尝试这样的事情。但不确定目前input
事件的支持程度如何。
(function() {
var elem = $('input');
var value = elem.val();
elem.bind("input propertychange", function(e) {
if (elem.val().split('a').length - 1 > 1)
elem.val(value);
else
value = elem.val();
});
})();
答案 4 :(得分:0)
当用户按下“a”或“A”时,您可以检查是否已经存在“a”或“A”,如果已经存在,则不会将其添加到输入中。
$('input').keypress(function(e){
if ((e.keyCode === 65 || e.keyCode === 97) & $(this).val().match(/a/gi) !== null) e.preventDefault();
})
答案 5 :(得分:0)
以下是您的小提琴的修改版本:http://jsfiddle.net/orlenko/zmebS/2/
$('input').keypress(function(e){
var that = $(this);
var parts = that.val().split('a');
if (parts.length > 2) {
parts.splice(1, 0, 'a');
that.val(parts.join(''));
} else {
// no need to replace
}
})
请注意,如果必须,我们只替换输入的内容 - 否则,不断重写内容将无法输入midle或文本的开头。
如果您想进一步改进它并且即使在我们 替换内容时也可以在开头键入,请查看有关检测和恢复选择的问题:How to get selected text/caret position of an input that doesn't have focus? < / p>