asp.net jscript 错误:无法获取未定义或空引用的属性“值”
刚开始学习并在使用 jscript 练习时遇到此问题
代码:
<script type="text/jscript" language="jscript">
function MyClientFunction(sender, arguments) {
var intValue = arguments.value;
alert(arguments.value);
if (intValue % 2 == 0) {
arguments.IsValue = true;
}
else {
alert("Use Even Numbers");
}
}
</script>
<asp:textbox ID="TextBox1" runat="server"></asp:textbox>
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="CustomValidator" ClientValidationFunction="MyClientFunction();" EnableClientScript="true"></asp:CustomValidator>
<asp:Button ID="Button1" runat="server" Text="Button"></asp:Button>
单击“按钮”后显示错误:
“...错误:无法获取未定义或空引用的属性‘值’...”
我不确定参数是如何传递的,不太熟悉 jscript 函数的工作原理
试过了,没有错误:
var intValue = document.getElementById("TextBox1").value;
alert(intValue);
非常感谢..
不要传递
this
。您不需要传递任何东西,只需为其指定函数的名称,其余部分将由我们为您处理:
ClientValidationFunction="MyClientFunction"
请参阅 此页面 上的示例。
同时请确保您使用了正确的大写字母。它应该是
arguments.Value
和
arguments.IsValid
。
您遇到了一些问题。这是已修复的版本
<script>
function MyClientFunction(sender, args) {
var intValue = args.Value;
alert(args.Value);
if (intValue % 2 == 0) {
args.IsValid = true;
}
else {
args.IsValid = false;
}
}
</script>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server"
ControlToValidate="TextBox1" ErrorMessage="Use Even Numbers"
ClientValidationFunction="MyClientFunction" EnableClientScript="true"></asp:CustomValidator>
<asp:Button ID="Button1" runat="server" Text="Button"></asp:Button>
更改内容列表
-
在验证器上添加
ControlToValidate
属性,将值设置为您希望验证的控件的 ID - 在本例中为TextBox1
-
ClientValidationFunction
的值应该只是 javascript 函数的名称,而不是对它的实际调用 -
该函数采用两个参数,您说得对。我找不到参数属性的定义。第二个 参数有
Value
(大写 V),它是文本框输入 现在您已正确关联控件。 -
在方法内将
IsValid
设置为 true 或 false -
将错误消息移至验证器属性,而不是使用 警报
此外,我将
arguments
更改为
args
,因为前者是 javascript 中的默认名称。
调用客户端函数时,您没有传递任何参数。
因此,其声明的两个参数均为
未定义
。
在内联事件处理程序中调用它时,您可能希望将
this
作为参数传递。