我正在尝试创建一个比较两个电子邮件字段的函数。
如:
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会显示一条提示:&#34; 电子邮件不匹配&#34;
为了进行额外测量,我将以下内容插入到表单的属性中: onsubmit =&#34; return confirmEmail()
因此,如果用户忽略第一个警告,当他试图按下“提交”按钮时,会收到第二个警告。
不幸的是,这就是我被困住的地方。因为:在第二次警告之后,如果用户仍然没有修改&#34;确认电子邮件&#34; ,SUBMIT按钮仍然有效表格被发送。
如何修改代码,以便:错误消息继续显示,直到用户正确更改email2?
(我尝试使用WHILE函数和DO .... WHILE函数。他们工作............除了,错误消息一直显示... ......并且不允许我对电子邮件字段进行必要的更正(哈哈)。我必须完全关闭窗口。
答案 0 :(得分:0)
我会用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方法发送它们。
答案 1 :(得分:0)
首先,为您的提交按钮提供如下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;
}
答案 2 :(得分:0)
你能做的是:
<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>
答案 3 :(得分:0)
试试这个兄弟,
<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>