javascript - 如果 jquery 函数为真,则仅使用表单操作 url
问题描述
我一直在寻找几个小时并尝试在此处和其他地方找到其他代码示例,但似乎没有任何效果。
如果电子邮件字段既不是空的也不是无效的,我只希望我的表单转到操作 url。如果不是,我希望除了显示我的错误消息之外什么都不会发生。这是我正在使用的当前脚本,但是当我单击取消订阅按钮时,无论如何它似乎都会转到操作 url。
function isEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9] .
{2,4})+$/;
return regex.test(email);
}
function validateForm() {
if( !isEmail( document.getElementById('email_address').value ) ) {
var err = document.getElementById('error');
err.show();
$( "#submit" ).click(function( event ) {
event.preventDefault();
return false;
} else {
return true;
}
}
html看起来像这样
<p id="error">Please enter your email address</p>
<form id="myForm" method="post"
action="https://fe3e15707564057a7d1470.pub.s10.sfmc-
content.com/tfuryofct5y?
optc=%%=v(@optc)=%%&brand=%%=v(@brand)=%%&ceid=%%=v(@ceid)=%%"
onsubmit="return validateForm();">
<input type="text" placeholder="email address" name="email_address"
id="email_address" align="center"/>
<p style="text-align:center;overflow:hidden;float:right;padding-
right:8em;">
<input id="submit" type="submit" value="Unsubscribe" ></p>
</form>
Jquery 不是我的强项,所以他们可能会走得很远。
解决方案
您正在混合 javascript 和 jquery 并导致 onclick 提交表单。
function validateForm() {
var err = $('#error');
if( !isEmail( document.getElementById('email_address').value ) ) {
err.show();
return false;
} else {
err.hide();
return true;
}
}