2011-11-03 106 views
1

我正在使用ASP.NET 2.0。无法将ASP服务器控制值传递给javascript函数

我有我的入口表单上的各种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事件中传递。警报消息显示“未定义”。

如何摆脱这个问题?

回答

1

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

+0

感谢。更需要的一点帮助是我想将焦点设置到检测到非数字条目的TextBox。 – RKh

1

删除的onblur:

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

JavaScript是不需要前缀:

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

正如Senad说,删除标记和变化的额外调用,

这.Value 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(); 
    } 
+0

这很好,但不幸的是,由于另一个VS-2005问题,它不能保证工作。看到我的另一个问题在这里:http://stackoverflow.com/questions/7752496/why-server-controls-are-underlined-when-placed-inside-content-tags – RKh

+0

不知道这是如何相关。 。 。你提到网站运行,但你在IDE中有问题 – ZedWonk

相关问题