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

 

 

 

 

。。。

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