2014-04-30 17 views
0

的行爲,這是我的代碼:奇怪事件的內容處理程序

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#txt1").focusout(function() { $("#lbl1").text("aaaa"); }); 
     $('#btn1').click(function(){ alert("clicked"); }); 
    }); 
</script> 

<asp:Label ID="lbl1" runat="server" ClientIDMode="Static" /> 
<asp:TextBox ID="txt1" runat="server" ClientIDMode="Static"/> 
<asp:Button ID="btn1" runat="server" ClientIDMode="Static"/> 

我跑我的代碼,並執行以下步驟:BTN1

1.按用鼠標內部TXT1
2.按鼠標 警告消息不會出現。只有當我再次點擊該按鈕時纔會出現。
只有當我更改lbl1的文字時,纔會發生這種情況。
爲什麼文本更改會導致點擊事件不被觸發?

+0

您是否試過:'$('#btn1')。click(function(){$(「#txt1」)。blur(); alert(「clicked」);});' –

+0

這可以解決你的問題:'$('#btn1')。click(function(){alert(「clicked」);})。click();'但是我不認爲這是個好主意...... –

回答

0

實際上,您的腳本沒有將點擊事件綁定到按鈕。因爲它具有屬性runat=server。所以它會改變渲染時元素的id。你應該使用類名或clientID而不是id。

使用的類名,

<script type="text/javascript"> 
$(document).ready(function() { 
    $(".txt1").focusout(function (e) { 
     e.stopPropagation(); 
     $(".lbl1").text("aaaa"); 
    }); 
    $('.btn1').click(function (e) { 
     e.stopPropagation(); 
     alert("clicked"); 
    }); 
}); 
</script> 

<asp:Label ID="lbl1" CssClass="lbl1" runat="server" /> 
<asp:TextBox ID="txt1" CssClass="txt1" runat="server" /> 
<asp:Button ID="btn1" CssClass="btn1" runat="server" /> 

編輯

問題是標籤的位置。請檢查這個Fiddle

+0

這就是不是故事。我在整個頁面上都有ClientIDMode =「Static」。 –

+0

你測試過了嗎?它不起作用,仍然是同樣的問題! –

+0

看到小提琴,問題是隨着位置的變化。 http://jsfiddle.net/J24yN/97/ –