TextBox 如何運用

1. TextBox 如何設置onFocus和onBlur

<asp:TextBox ID="LoginID" onFocus="checkAccount();" onBlur="checkAccount1();" runat="server"></asp:TextBox>

 或者

 

<asp:TextBox ID="LoginID" runat="server"></asp:TextBox>

 在CS裏面加代碼

protected void Page_Load(object sender, EventArgs e)
    {
        LoginID.Attributes.Add("onfocus", "checkAccount()");
        LoginID.Attributes.Add("onblur", "checkAccount1()");
    }

 

2. 用<INPUT>時   通過js給input輸入框賦值,並不觸發input輸入框的onchange   事件   可以通過onpropertychange來解決。  
   
  用<asp:TextBox>   通過jsTextBox賦值,並不會使TextBox PostBack      
  後來這樣做      
  this.TBEmailID.Attributes.Add("onpropertychange","__doPostBack('TBEmail','')"); 


onchange事件只有是用鍵盤輸入纔會觸發。或者在頁面的js中調用onchange()函數(可以觸發C#的TextChanged事件), 例如:

document.getElementById("elementID").onchange();
or
document.textbox1.onchange();
 

對象的value屬性被頁面的腳本修改的時候,onchange無法捕獲到,而onpropertychange卻能夠捕獲。 也就是說:onpropertychange能及時捕獲屬性值的變化 ,而onchange在屬性值改變時還必須使得當前元素失去焦點(onblur)纔可以激活該事件! 而用propertychange似乎陷入死循環,因爲在onpropertychange事件裏需要更改控件的value,這樣就反覆不停的執行。可以通過以下方法來避免反覆調用:

<input   type=text   onpropertychange= "if (event.propertyName == "value ") change(this) "> 
 

 

通常用於監控前臺空間屬性改變可以使用的事件有onblur, onchange, onpropertychange,第一個爲當控件失去焦點後觸發,而第二個爲當屬性內容改變後觸發,不過前兩個同時使用,則會首先觸發後者,再觸發前者,而第三個是javascript的事件,不屬於控件自身所帶事件,其可以監視任何控件全部屬性的變化,十分的具體和全面,但同時也是非常的耗費資源,一不小心就會出現比較大的問題,所以建議使用的時候,一定要做好篩選過濾的工作,以上三個屬性都可以支持FireFox和IE,但是Safari是不支持第三者的,所以必須使用其特有的oninput事件即可。

 

 

 

3. Textbox的readonly屬性

 

在ASP.NET 2.0後, 當postback頁面時,如果Textbox是readonly的話,Textbox中改變的值會被忽略。 也就是說如果在前臺用js修改了textbox的值, server不會把新的值寫入textbox的‘Text’屬性。 所以不會引發TextChanged event。 這個機制是用來防止用戶繞開Textbox的readonly狀態而引發的安全問題。

 

如果需要避開這個機制,可以用:

txtTextBox.Attributes.Add("readonly", "readonly")

 

這樣server就不知道textbox是readonly

參考: 

http://scottonwriting.net/sowblog/posts/4965.aspx

http://west-wind.com/weblog/posts/3939.aspx

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=102065

 

 

 

 

。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章