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

时间:2011-11-03 12:32:10

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

我正在使用ASP.NET 2.0。

我的条目表单上有各种ASP.NET服务器控件,如TextBoxes。我想在 onBlur 事件上传递TextBox值。示例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事件传递。警报消息显示“未定义”。

如何摆脱这个问题?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

删除onBlur:

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

不需要javascript前缀:

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

答案 2 :(得分:1)

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

this.Value to this.value。

JavaScript区分大小写,并且未定义值,但值为。


将焦点设置回控件 将后面的代码更改为

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