2011-03-22 49 views
0

所以我有一個燈箱彈出一個aspx頁面的文本框和兩個按鈕(提交 - 禁用和取消 - 啓用)。我想啓用我的提交按鈕ontextchange。它在單獨打開時(而不是作爲燈箱)正常工作,但是當我讓它每次運行lightbox函數時都會正常運行ontextchange觸發整個頁面刷新禁用燈箱。c#如何啓用按鈕ontextchange沒有回發

<asp:TextBox ID="textBox1" runat="server" OnTextChanged="OnTextChanged_AttributesEdited" autopostback="true"> 


protected void OnTextChanged_AttributesEdited(object sender, EventArgs e) 
{ 
    btnSubmit.Enabled = true; 

} 

現在,如果我走了「的AutoPostBack = true」,可以再不會觸發的ontextchanged。想知道是否更好,如果JavaScript將成爲啓用按鈕的方式,或者有一種方法,我可以防止ontextchanged觸發時回發?

非常感謝!

回答

1

我認爲這將是您的應用程序中的一些jQuery的主要用途。如果不回覆啓用/禁用按鈕的服務器,這看起來會更順暢,加載速度更快,並保持當前頁面狀態不變。一個例子可能是如下:

<script type="text/javascript"> 
$(document).ready(function() {  
    $("#textBox1").change(function() { 
     $("#btnSubmit").removeAttr("disabled"); 
    }); 
}); 
</script> 

只要把上面的腳本標籤在你的HTML,剛剛閉幕的body標記之前。

然而,更好的解決方案是將一個特定的CSS類分配給所有應該繼承該行爲的文本框。假設您指定名爲「someCssClass」所有這些文本框CSS類,你的腳本將則是這個樣子:

<script type="text/javascript"> 
$(document).ready(function() {  
    $("input.someCssClass").change(function() { 
     $("#btnSubmit").removeAttr("disabled"); 
    }); 
}); 
</script> 
+0

嘿感謝,我可能必須先通讀它,因爲我不知道如何實現jQuery。 – gdubs 2011-03-22 19:24:42

+0

這很容易。只需在jQuery庫中包含javascript引用(也由Google託管,但可以下載並在自己的域中託管),然後在我的示例中包含腳本標記... – FarligOpptreden 2011-03-22 19:51:24

+0

請注意,對於#textBox1來處理ASP.NET控件,你需要將'ClientIDMode'設置爲'Static'(只有ASP.NET 4.0)。或者,您可以在腳本塊中使用以下內容:'$(「#<%= textBox1.ClientID%>」)',因爲這將輸出發送到瀏覽器的實際ID,該腳本將查找該ID。 – 2011-03-22 21:18:22

-1

我會使用jQuery通過@FarligOpptrenden提到的,但如果你沒有它只是想要簡單的JavaScript,這應該工作。您的收藏夾內

輸入:

<input type="text" id="textbox" onKeyUp="enableSubmitButton()" /> 
<input type="button" id="submitButton" value="Submit" /> 
<input type="button" id="cancelButton" value="Cancel" /> 

的Javascript:

<script type="text/javascript"> 

function enableSubmitButton() 
{ 
document.getElementById('submitButton').disabled = false; 
document.getElementById('cancelButton').disabled = true; 
} 

</script> 

你也可以做您的啓用/負載禁用按鈕在javascript:

<script type="text/javascript"> 

window.onload = function() { 

document.getElementById('submitButton').disabled = true; 
document.getElementById('cancelButton').disabled = false; 

} 
</script>