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
。。。