我正在尝试创建一个函数来比较两个电子邮件字段。
如:
Email : <input type="text" name="email" id="email" value="<?=$email?>"
required>
Confirm email : <input type="text" name="email2" id="email2"
onblur="confirmEmail()" value="<?=$email2?>" required>
以下是我插入HTML的JavaScript代码:
<script type="text/javascript">
function confirmEmail() {
var email = document.getElementById("email").value
var email2 = document.getElementById("email2").value
if (email != email2) {
alert('Email Not Matching!'); }
}
</script>
代码有效。
一旦用户输入第二个电子邮件地址,localhost就会显示一条警报,称:"电子邮件不匹配"
为了获得额外的度量,我在表单的属性中插入了以下内容:onsubmit="return confirmEmail()
因此,如果用户忽略了第一个警告,当他试图按下"提交"按钮时,就会收到第二个警告。
不幸的是,这就是我的困境。因为:在第二次警告之后,如果用户仍然没有修改"确认电子邮件",则"提交"按钮仍然有效。表单将被发送。
我如何修改代码,以便:错误消息继续显示,直到用户正确更改电子邮件2??
(我试着使用WHILE函数和DO….WILE函数。它们起作用了…………只是,错误消息不断显示………,不允许我对电子邮件字段进行必要的更正(哈哈)。我不得不完全关闭窗口)
首先,给提交按钮一个ID,如下所示:
<input type="submit" value="Submit" id="mySubmit" disabled="disabled">
在你的if块中添加:
if (email !== email2) {
alert('Not matching')
document.getElementById("mySubmit").disabled = true;
}else{
document.getElementById("mySubmit").disabled = false;
}
您可以做的是:
<script type="text/javascript">
var count=0;
function confirmEmail() {
var email = document.getElementById("email").value
var email2 = document.getElementById("email2").value
function chkEmail(){
if (email != email2 && count==0)
{ alert('Email Not Matching!'); count++ }
else if(email!=email2 && count ==1)
//display warning
}
chkEmail();
}
</script>
我会用JavaScript提交表单。
<form>
Email : <input type="text" name="email" id="email" value="<?=$email?>"
required>
Confirm email : <input type="text" name="email2" id="email2"
onblur="confirmEmail()" value="<?=$email2?>" required>
</form>
<button onclick="formSubmit()">Learn More</button>
您的formSubmit()函数只需拉入值,并在正确的检查后提交它们。这样,无论用户输入什么,在提交之前都必须经过您的验证。
function formSubmit() {
var email = document.getElementById("email").value;
var email2 = document.getElementById("email2").value;
if (email != email2) {
alert('Email Not Matching!');
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","/Your/Path/To/Your/Form-Processing/?email="+email,true);
xmlhttp.send();
}
上面的函数将出现在您的脚本标记中。它检查email
和email2
,然后以与表单相同的方式将带有GET的email
提交到处理页面。您也可以以相同的方式传递其他变量,方法是使用document.getElementById('#id').value
获取它们,然后通过GET方法发送它们。
试试这个兄弟,
<form name="form" method="post" action="">
Email : <input type="text" name="email" id="email" value="<?=$email?>" required>
Confirm email : <input type="text" name="email2" id="email2" value="<?=$email2?>" required>
<input type="submit" value="submit" onsubmit="return confirmEmail();"/>
</form>
和java脚本
<script type="text/javascript">
function confirmEmail() {
var email = document.getElementById("email").value;
var email2 = document.getElementById("email2").value;
if (email != email2)
{ alert('Email Not Matching!'); return false; }
else {
return true;
}
}
</script>