在使用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);
非常感谢..
答案 0 :(得分:2)
不要通过this
。你不想传递任何东西,你只想给它你的功能名称,其余的将为你处理:
ClientValidationFunction="MyClientFunction"
请参阅this page上的示例。
还要确保使用正确的大小写。它应该是arguments.Value
和arguments.IsValid
。
答案 1 :(得分:1)
<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
的值应该只是a的名称
javascript函数,而不是实际调用它
该函数有两个你有权的参数。我不能
找到参数属性的定义。第二
参数具有Value
(带有大写字母V),这是文本框输入
现在您已正确关联控件。
在方法
IsValid
为true或false
将错误消息移至验证器属性而不是使用 警报
另外我将arguments
更改为args
,因为前者是javascript中的默认名称。
答案 2 :(得分:0)
调用客户端功能时,您没有传递任何参数
因此,它声明的两个参数都是undefined
。
当您在内联事件处理程序中调用它时,您可能希望将this
作为参数传递。
答案 3 :(得分:0)
原因是JavaScript是一种区分大小写的语言。 以下代码应该有效:
<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>
解释是参数是一个参数对象,它有两个你知道的属性(Value和IsValid),你引用的是带有小写“v”的属性“Value”。
您还需要将属性ControlToValidate添加到CustomValidator:
ControlToValidate="TextBox1"
CustomValidator的公共ClientValidationFunction属性只是期望对您的函数有效的全名引用,您可以只使用“MyClientFunction”而不使用函数调用“();”。此外,所有ASP.net验证器都有一个名为ValidationGroup的公共属性,如果您有多个验证区域,它只是一个非常方便的标签。