为什么在提交表单时没有触发Javascript的isValidEmailAndEqual:
echo("<script language='javascript' type='text/javascript'>
<!--
function isValidEmailAndEqual() {
regExp = /^[^@]+@[^@]+$/;
if((document.subscribe.email1.value.search(regExp) == -1) || !isEqual(document.subscribe.email1.value, document.subscribe.email2.value))
{
//alert(isEqual(document.subscribe.email1.value, document.subscribe.email2.value))
alert('Incorrect entered email addresses. They must be valid e-mail addresses and equal.');
return false;
}
//document.subscribeForm.submit();
return true;
}
-->
</script>");
echo ("<div class='subscribe'>
<h4>Subscribe</h4>
<p>Subscribe to iAndApp's newsletter in order to get information about new and updated iPhone games and iPhone applications, that has been released by iAndApp. </p>
<form action='subscription.php' name='subscribe' method='post' onsubmit='return isValidEmailAndEqual()'>
<p class='formlabel'>Förnamn</p> <input type='text' name='first_name'/><br/>
<p class='formlabel'>Efternamn</p> <input type='text' name='surname'/> <br/>
<p class='formlabel'>E-mail</p> <input type='text' name='email1'/><br/>
<p class='formlabel'>Repeat e-mail</p> <input type='text' name='email2'/> <br/>
<input class='inputsubmit' type='submit' value='Subscribe'/>
</form>
</div>");
Firebug告诉我页面上没有javascript。
我尝试了带和不带注释和前缀结束注释标记。
我所做的,这可能很重要,是从服务器加载下面的内容,然后添加到div标签。内容呈现出来了,但是脚本仍然不能工作。我还尝试在主/父页面(页面加载内容并将其添加到div)上包含脚本,其中我有其他脚本可以工作(由主/父页面中的组件触发)。
提前感谢!
应该是echo("<script language='javascript' type='text/javascript'>
<!--
//your code here, obviously not commented
//-->
</script>
通知你,http://www.w3.org/TR/html4/interact/scripts.html h-18.3.2
实际上,它们是被触发的。下面的HTML(与脚本输出的完全一样)会在firefox 5和chrome中触发该函数。作为旁注,您可能不需要html注释(<!--
和-->
)。这种做法通常不再需要,因为不支持javascript的浏览器会忽略标签中的所有内容。
也就是说,如果你必须有html注释,注释掉-->
以避免它触发JS错误(如Kumar解释的)。
<script language='javascript' type='text/javascript'>
<!--
function isValidEmailAndEqual() {
regExp = /^[^@]+@[^@]+$/;
if((document.subscribe.email1.value.search(regExp) == -1) || !isEqual(document.subscribe.email1.value, document.subscribe.email2.value))
{
//alert(isEqual(document.subscribe.email1.value, document.subscribe.email2.value))
alert('Incorrect entered email addresses. They must be valid e-mail addresses and equal.');
return false;
}
//document.subscribeForm.submit();
return true;
}
-->
</script><div class='subscribe'>
<h4>Subscribe</h4>
<p>Subscribe to iAndApp's newsletter in order to get information about new and updated iPhone games and iPhone applications, that has been released by iAndApp. </p>
<form action='subscription.php' name='subscribe' method='post' onsubmit='return isValidEmailAndEqual()'>
<p class='formlabel'>Förnamn</p> <input type='text' name='first_name'/><br/>
<p class='formlabel'>Efternamn</p> <input type='text' name='surname'/> <br/>
<p class='formlabel'>E-mail</p> <input type='text' name='email1'/><br/>
<p class='formlabel'>Repeat e-mail</p> <input type='text' name='email2'/> <br/>
<input class='inputsubmit' type='submit' value='Subscribe'/>
</form>
</div>