在我的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编码,而且大多数都是抛出错误。有人帮助我吗?
答案 0 :(得分:1)
我无法解释“ValMail()未定义”错误。但是,如果您使用浏览器的“查看页面源”选项,我想您会发现这一行:
var Resp = <%IsValidEmail(Email.Text)%>;
...将发送到浏览器:
var Resp = True;
或:
var Resp = False;
其中任何一个都是JavaScript中的语法错误,因为JS区分大小写,并且您需要布尔值true
和false
中的小写t或f。因此,要么修改ASP代码以全部小写输出true
或false
,要么添加引号,以便JS将其视为字符串,然后测试为具有匹配大写字母F的字符串:
var Resp = "<%IsValidEmail(Email.Text)%>";
if (Resp != "False")
考虑到Resp
仅在声明后的一个地方使用,您可以缩小为:
if ("<%IsValidEmail(Email.Text)%>" != "False") {
此外,我认为您需要txt.value
,而不是txt.nodeValue
。
最后,通过缩进判断,我怀疑你希望if
下的两行都属于if
,在这种情况下,它们需要包含在由{{1}指定的块中}和{
- 您目前没有开放}
,这意味着只有{
后面的行才属于它。
把所有这些放在一起:
if