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