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

blur 事件不会在 Internet Explorer 中冒泡。因此,依赖于带有 blur 事件的事件委托的脚本将无法在浏览器中始终如一地工作。然而,从 1.4.2 版本开始,jQuery 通过在其事件委托方法 .live() 和 .delegate() 中将模糊映射到 focusout 事件来解决这个限制。

在这里查看更多:

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

于 2013-08-01T09:14:11.260 回答