我正在使用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
事件传递。警报消息显示“未定义”。
如何摆脱这个问题?
答案 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();
}