使用javascript未定义函数

时间:2013-11-28 21:02:12

标签: javascript jquery asp.net

在我的ASP.NET页面中使用以下代码:

<asp:ScriptManager  ID="ScriptManager1" runat="server"></asp:ScriptManager>
<script type="text/javascript" language="javascript">
        function ValMail() {
        var txt = document.getElementById("<%= Email.ClientID%>");
        var Resp = <%IsValidEmail(Email.Text)%>;
        if (Resp != false)
            txt.nodeValue = "";
            txt.focus();
            };
    </script>
    <asp:Label ID="EmailLabel" runat="server" AssociatedControlID="Email">E-mail:</asp:Label>
    <asp:TextBox ID="Email" runat="server" TabIndex="4" CssClass="textEntry" CausesValidation="True" ></asp:TextBox>
<asp:Button ID="TestButton" runat="server" OnClientClick="ValMail()" />

我的问题是当我点击按钮时执行命令OnClientClick="ValMail()"
保持程序的执行并给我一个错误javascript runtime error: ValMail() is undefined
但即使播种我点击Ignore并且代码进入脚本只执行行var Resp = <%IsValidEmail(Email.Text)%>;而javascript中其余代码没有任何内容 我完全不熟悉javascript编码,而且大多数都是抛出错误。有人帮助我吗?

1 个答案:

答案 0 :(得分:1)

我无法解释“ValMail()未定义”错误。但是,如果您使用浏览器的“查看页面源”选项,我想您会发现这一行:

var Resp = <%IsValidEmail(Email.Text)%>;

...将发送到浏览器:

var Resp = True;

或:

var Resp = False;

其中任何一个都是JavaScript中的语法错误,因为JS区分大小写,并且您需要布尔值truefalse中的小写t或f。因此,要么修改ASP代码以全部小写输出truefalse,要么添加引号,以便JS将其视为字符串,然后测试为具有匹配大写字母F的字符串:

var Resp = "<%IsValidEmail(Email.Text)%>";
if (Resp != "False")

考虑到Resp仅在声明后的一个地方使用,您可以缩小为:

if ("<%IsValidEmail(Email.Text)%>" != "False") {

此外,我认为您需要txt.value,而不是txt.nodeValue

最后,通过缩进判断,我怀疑你希望if下的两行都属于if,在这种情况下,它们需要包含在由{{1}指定的块中}和{ - 您目前没有开放},这意味着只有{后面的行才属于它。

把所有这些放在一起:

if