1. TextBox JS前台赋值触发Onchange事件
1) 1.用动态生成的<INPUT>或着Textbox时通过js给input输入框赋值,并不触发input输入框的onchange 事件可以通过以下下方式来解决。
后台C#代码:
System.Web.UI.WebControls.TextBoxtextbox = new System.Web.UI.WebControls.TextBox();
textbox.Attributes.Add("onkeydown","DateTimekeydown(this)");
前台JS代码:
function DateTimekeydown(control) control参数表示textbox
{
control.value = "";
control.fireEvent("onchange");
return;
}
或者
function DateTimekeydown(control) //control参数表示textbox
{
control.value = "";
control.onchange();
return;
}
2) 用动态生成的<INPUT>或着Textbox时只能通过时间控件DatePicker给input输入框赋值,并且除了BackSpace和Delete键外,其他的按键都不能输入控件,可以通过以下下方式来解决。
后台C#代码:
System.Web.UI.WebControls.TextBoxtextbox = new System.Web.UI.WebControls.TextBox();
textbox.Attributes.Add("readonly","readonly");
textbox.Attributes.Add("onkeydown","DateTimekeydown(this)");
前台JS代码:
function DateTimekeydown(control)
{
var control_id = "#" + control.id;
var curKey = event.Which ||event.keyCode;
//delete , 当按下Delete键时Textbox值空,触发onchange事件
if (curKey == 46)
{
control.value = "";
control.fireEvent("onchange");
return;
}
//backspace,当按下Backspace键时Textbox值空,触发onchange事件,同时不让页面刷新
if (curKey== 8)
{
if (event.keyCode != 0)
{
event.keyCode = 0;
event.returnValue = false;
}
else if(event.which != 0)
{
event.which = 0;
event.returnValue = false;
}
control.value = "";
control.fireEvent("onchange");
return;
}
return;
}
3) Textbox的readonly属性
ReadOnly属性学习引自http://kooyee.iteye.com/blog/593214
在ASP.NET 2.0后, 当postback页面时,如果Textbox是readonly的话,Textbox中改变的值会被忽略。 也就是说如果在前台用js修改了textbox的值, server不会把新的值写入textbox的‘Text’属性。 所以不会引发TextChanged event。 这个机制是用来防止用户绕开Textbox的readonly状态而引发的安全问题。 如果需要避开这个机制,可以用:
TextBox.Attributes.Add("readonly","readonly")