0

<textarea>\保持できないように検証する必要があるいくつかの要素を含むフォームがありますpipe lines |。以下はコードです。何か不足している場合はお知らせください。

$(".no_pipes").blur(function() {
    var str = $(this).val();
    alert(str); // ---> it alerts nothing!
    if (str.indexOf("|") >= 0) {
        alert("The informatin you provided contains illegal characters(\"|\")");
        $(this).css('border', '1px solid pink');
        var that = $(this);
        setTimeout(function() {
            that.focus()
        }, 0);
    } else {
        $(this).css('border', '1px solid #ccc');
    }
});

ボタンを使用してフォームにフィールドをADD追加します。<textarea>

var newTextBoxDiv = $(document.createElement('div')).attr("id", 'TextBoxDiv' + counter);
newTextBoxDiv.after().html('<textarea class="no_pipes" name="field[value][]" required ></textarea>');
newTextBoxDiv.appendTo("#TextBoxesGroup");
4

2 に答える 2

1

委任を使用する必要があり、ぼかしの代わりに focusout イベントを使用する必要があります。ぼかしイベントはバブルではなく、委任が機能するには伝播が必要です。

$(document).on('focusout',".no_pipes",function() {
    var str = $(this).val(); // you could use this.value instead
    alert(str); // ---> it alerts nothing!
    if (str.indexOf("|") >= 0) {
        alert("The informatin you provided contains illegal characters(\"|\")");
        $(this).css('border', '1px solid pink');
        var that = $(this);
        setTimeout(function() {
            that.focus()
        }, 0);
    } else {
        $(this).css('border', '1px solid #ccc');
    }
});
于 2013-08-01T09:14:17.843 に答える
0

ぼかしイベントは、Internet Explorer ではバブルしません。したがって、blur イベントによるイベント委任に依存するスクリプトは、ブラウザー間で一貫して動作しません。ただし、バージョン 1.4.2 の時点で、jQuery は、イベント委譲メソッド .live() および .delegate() で、blur を focusout イベントにマッピングすることによって、この制限を回避します。

詳細はこちら:

http://api.jquery.com/blur/

于 2013-08-01T09:14:11.260 に答える