【问题标题】:Not able to pass ASP server control value to javascript function无法将 ASP 服务器控件值传递给 javascript 函数
【发布时间】:2011-11-03 12:32:09
【问题描述】:

我正在使用 ASP.NET 2.0。

我的输入表单上有各种 ASP.NET 服务器控件,例如 TextBoxes。我想在 onBlur 事件上传递 TextBox 值。示例文本框代码如下:

<asp:TextBox ID="txtTotalTw" Width="80px" runat="server" MaxLength="10" onBlur="isNumber(this.Value);"></asp:TextBox>

在代码隐藏中我添加了以下行:

txtTotalTw.Attributes.Add("onBlur", "javascript:isNumber(this.Value)");

JavaScript 如下:

<script type="text/javascript" language="javascript">
function isNumber(n) {
  alert(n);
  return !isNaN(parseFloat(n)) && isFinite(n);
}
</script>

我添加了alert(n) 来检查值是否通过。该值未从 onBlur 事件传递。警报消息显示“未定义”。

如何解决这个问题?

【问题讨论】:

    标签: c# javascript asp.net asp.net-2.0


    【解决方案1】:

    从您的 aspx 模板文件中删除 onBlur。只需留下您从代码隐藏中添加的一个。它会起作用的。

    【讨论】:

    • 谢谢。更需要一点帮助是我想将焦点设置到检测到非数字条目的文本框。
    【解决方案2】:

    移除 onBlur:

    <asp:TextBox ID="txtTotalTw" Width="80px" runat="server" MaxLength="10" ></asp:TextBox>
    

    不需要javascript前缀:

    txtTotalTw.Attributes.Add("onBlur", "isNumber(this.value);");
    

    【讨论】:

      【解决方案3】:

      正如 Senad 所说,删除标记中的额外调用并更改,

      this.Value 到 this.value。

      JavaScript 区分大小写且未定义 Value,但 value 已定义。


      将焦点设置回控件 把后面的代码改成

      txtTotalTw.Attributes.Add("onBlur", "javascript:isNumber(this)")
      

      把函数改成这样的

      function isNumber(ctrl) {
        var t = ctrl.value;
        var n = parseFloat(t);       
        if (isNaN(n) || !isFinite(n)) {
          ctrl.focus();
        }
      

      【讨论】:

      • 这很好用,但不幸的是,由于另一个 VS-2005 问题,它不能保证工作。在这里查看我的另一个问题:stackoverflow.com/questions/7752496/…
      • 不确定这有什么关系。 . .您提到该站点运行,但您在 IDE 中遇到问题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多