开发者问题收集

asp.net jscript 错误:无法获取未定义或空引用的属性“值”

2013-09-10
9249

刚开始学习并在使用 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);

非常感谢..

3个回答

不要传递 this 。您不需要传递任何东西,只需为其指定函数的名称,其余部分将由我们为您处理:

ClientValidationFunction="MyClientFunction" 

请参阅 此页面 上的示例。

同时请确保您使用了正确的大写字母。它应该是 arguments.Valuearguments.IsValid

sgbj
2013-09-11

您遇到了一些问题。这是已修复的版本

<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 中的默认名称。

lincolnk
2013-09-11

调用客户端函数时,您没有传递任何参数。
因此,其声明的两个参数均为 未定义

在内联事件处理程序中调用它时,您可能希望将 this 作为参数传递。

SLaks
2013-09-10