2013-08-01 131 views
0

我有一個表單,其中有一些<textarea>元素需要驗證,因此它\他們不能保存pipe lines|。以下是代碼,請讓我知道它是否缺少任何東西!Jquery無法識別模糊事件

$(".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"); 

回答

1

你必須使用授權,使用事件的內容事件,而不是模糊,模糊事件不會泡沫和代表團需要傳播工作:

$(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'); 
    } 
}); 
+0

它仍然存在問題。 – goseo

+0

對不起,犯了一個錯誤,使用文件作爲代表目標或更好的所有文本區的最接近的靜態容器 –

+0

是的,它的工作..!謝謝..! (1) – goseo

0

模糊事件在Internet Explorer中不起泡。因此,依賴事件委派和blur事件的腳本在跨瀏覽器時不能一致地工作。但是,從版本1.4.2開始,jQuery通過在其事件委託方法,.live()和.delegate()中將blur映射到focusout事件來解決此限制。

查看更多在這裏:

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