无法将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
事件传递。警告信息显示"未定义"。
如何解决这个问题?
从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();
}