0
$('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」を1つだけ入れたい。長さ a > 1 かどうかを確認し、次に入力から「a」を削除しますが、うまくいきません。この入力から秒 a だけを削除したいと思います。1 つの「a」が許可されます。

4

6 に答える 6

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,''));
    }
});

デモ: http://jsfiddle.net/elclanrs/Ht8rU/3/

于 2013-06-15T22:34:12.803 に答える
0

ユーザーが「a」または「A」を押すと、「a」または「A」がすでに存在するかどうかを確認できます。すでに存在する場合は、入力に追加しません。

$('input').keypress(function(e){
    if ((e.keyCode === 65 || e.keyCode === 97) & $(this).val().match(/a/gi) !== null) e.preventDefault();
})

更新されたjsFiddle

于 2013-06-15T22:49:57.440 に答える
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
    }    
})

必要な場合にのみ入力の内容を置き換えることに注意してください。そうしないと、内容を常に書き換えると、テキストの途中または最初に入力できなくなります。

さらに改善し、コンテンツを置き換えている場合でも最初に入力できるようにしたい場合は、選択の検出と復元に関するこの質問を確認してください: How to get selected text/caret position of an input that not have集中?

于 2013-06-15T22:51:19.210 に答える
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();
    });
})();

http://jsfiddle.net/Ht8rU/8/

于 2013-06-15T22:49:18.733 に答える
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);
});

これは、これの有効な JSFiddleです。

于 2013-06-15T22:38:45.167 に答える