TextBox JS前台赋值触发Onchange事件,屏蔽键盘操作

1.  TextBox JS前台赋值触发Onchange事件

1)     1.用动态生成的或着Textbox时通过jsinput输入框赋值,并不触发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)     用动态生成的或着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)     Textboxreadonly属性

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")  

 

 

你可能感兴趣的:(ASP.NET,实习,JavaScript)