Jquery无法识别模糊事件

时间:2013-08-01 09:11:09

标签: jquery onblur

我有一个包含一些<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");

2 个答案:

答案 0 :(得分: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');
    }
});

答案 1 :(得分:0)

模糊事件在Internet Explorer中不会出现气泡。因此,依赖于使用模糊事件的事件委派的脚本将无法在浏览器中一致地工作。但是,从版本1.4.2开始,jQuery通过将模糊映射到其事件委托方法.live()和.delegate()中的focusout事件来解决此限制。

在此处查看更多信息:

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