无法将ASP服务器控件值传递给javascript函数

本文关键字:javascript 函数 值传 服务器控件 ASP | 更新日期: 2023-09-27 18:13:07

我使用的是ASP。NET 2.0。

我有各种ASP。. NET服务器控件,如我的输入表单上的文本框。我想通过文本框值上的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)来检查value是否传递。该值没有从onBlur事件传递。警告信息显示"未定义"。

如何解决这个问题?

无法将ASP服务器控件值传递给javascript函数

从aspx模板文件中删除onBlur。只留下一个您从代码后添加的。它会成功的

删除onBlur:

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

javascript前缀不需要:

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

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

。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();
  }