积极答复者
js中文本框如何获得焦点

问题
-
this.txtSl.Attributes.Add("onblur", "if(parseFloat(this.value)<='0'){alert('数量不能小于等于零');;return false;}");这句话中,我想在alert语句后,txtSl文本框重新获得焦点,行不行,如何实现
dyx9010- 已移动 Sheng Jiang 蒋晟Moderator 2009年9月30日 19:00 web开发问题 (发件人:Visual C#)
答案
-
this.focus()和document.getElementById('txtSl).focus()都不管用
dyx9010
您好,asp.net会对this.txtSl.Attributes.Add的文本进行编码,所以js代码中的小于号会被认为左尖括号而被编码。
可以考虑用以下方法替代:
this.ClientScript.RegisterStartupScript(this.GetType(), "blur", "function checkValue(obj){if(parseFloat(obj.value)<=0){alert('数量不能小于等于零');obj.focus();}}", true);
this.txtSl.Attributes.Add("onblur", "checkValue(this);");
改进建议:
1、用select方法代替focus,可以高亮显示出错区域
2、判断小于零之前先判断是否为数字
基于以上两点可以改进为:this.ClientScript.RegisterStartupScript(this.GetType(), "blur", "function checkValue(obj){if(isNaN(obj.value)){alert('请输入数字!');return false;} if(parseFloat(obj.value)<=0){alert('数量不能小于等于零');obj.select();}}", true);
this.TextBox1.Attributes.Add("onblur", "return checkValue(this);");
3、可以把checkValue(obj)方法放到aspx或单独的js文件中。- 已标记为答案 KeFang Chen 2009年10月2日 3:38
全部回复
-
this.focus()和document.getElementById('txtSl).focus()都不管用
dyx9010
您好,asp.net会对this.txtSl.Attributes.Add的文本进行编码,所以js代码中的小于号会被认为左尖括号而被编码。
可以考虑用以下方法替代:
this.ClientScript.RegisterStartupScript(this.GetType(), "blur", "function checkValue(obj){if(parseFloat(obj.value)<=0){alert('数量不能小于等于零');obj.focus();}}", true);
this.txtSl.Attributes.Add("onblur", "checkValue(this);");
改进建议:
1、用select方法代替focus,可以高亮显示出错区域
2、判断小于零之前先判断是否为数字
基于以上两点可以改进为:this.ClientScript.RegisterStartupScript(this.GetType(), "blur", "function checkValue(obj){if(isNaN(obj.value)){alert('请输入数字!');return false;} if(parseFloat(obj.value)<=0){alert('数量不能小于等于零');obj.select();}}", true);
this.TextBox1.Attributes.Add("onblur", "return checkValue(this);");
3、可以把checkValue(obj)方法放到aspx或单独的js文件中。- 已标记为答案 KeFang Chen 2009年10月2日 3:38