none
js中文本框如何获得焦点 RRS feed

  • 问题

  •   this.txtSl.Attributes.Add("onblur", "if(parseFloat(this.value)<='0'){alert('数量不能小于等于零');;return false;}");这句话中,我想在alert语句后,txtSl文本框重新获得焦点,行不行,如何实现
    dyx9010
    2009年9月30日 4:07

答案

  • 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文件中。
    2009年9月30日 14:52
    版主

全部回复

  • if(parseFloat(this.value)<='0'){alert('数量不能小于等于零');this.focus();return false;}
    知识改变命运,奋斗成就人生!
    • 已建议为答案 泉泉 2009年9月30日 7:54
    2009年9月30日 4:51
    版主
  • this.focus()和document.getElementById('txtSl).focus()都不管用
    dyx9010
    2009年9月30日 11:55
  • 请孟子E章回答一下,多谢
    dyx9010
    2009年9月30日 11:56
  • focus()方法不行?
    你贴一下你的具体代码,是不是有什么地方被限制住了?
    做最好的自己
    2009年9月30日 14:44
  • 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文件中。
    2009年9月30日 14:52
    版主