2015-02-09 25 views
0

我想創建一個函數來比較兩個電子郵件字段。PHP代碼電子郵件比較/驗證

如:

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> 

下面是JavaScript代碼我插入我的HTML:

<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> 

代碼工作。

一旦用戶進入第二個電子郵件地址,本地主機顯示一個警告,他說:「電子郵件不匹配

對於額外的措施,我插入以下到窗體的屬性:的onsubmit =「返回confirmEmail()

因此,如果用戶忽略的第一個警告,他當他設法按下提交鍵增加了第二個警告

不幸的是,這就是我堅持的原因是:。之後的第二w ^如果用戶仍未修改「確認電子郵件」,則提交按鈕仍然有效。表單已發送。

如何修改代碼,以便:錯誤消息繼續顯示,直到用戶正確更改email2?我試過使用WHILE函數和DO .... WHILE函數,他們工作............,除了這個錯誤消息一直顯示出來。 .......並且不允許我對電子郵件字段進行必要的更正(哈哈),我不得不完全關閉窗口)

+0

沒有任何一個不能複製和粘貼?這些表格是如此令人討厭 – 2015-02-09 20:14:49

+0

@Dagon我同意! – 2015-02-09 20:16:28

+0

「PHP代碼電子郵件比較」這是純粹的JavaScript,或者你真的想要PHP? – 2015-02-09 20:19:16

回答

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(); 
} 

上面的函數將放入腳本標記中。它會針對每一個檢查emailemail2,然後使用GET將email以與表單相同的方式提交到處理頁面。您也可以通過使用document.getElementById('#id').value來傳遞其他變量,然後通過GET方法發送它們。

+0

感謝您的答覆,SRing。我很新,但是,確切地說,那個函數「formSubmit()」的定義是? – newuserphp 2015-02-10 11:44:10

+0

編輯包含'formSubmit()'的信息 – SRing 2015-02-10 12:35:25

0

首先,給你的提交按鈕的ID是這樣的:

<input type="submit" value="Submit" id="mySubmit" disabled="disabled"> 

而在你的,如果塊添加:

if (email !== email2) { 
    alert('Not matching') 
    document.getElementById("mySubmit").disabled = true; 
}else{ 
    document.getElementById("mySubmit").disabled = false; 
} 
+0

謝謝,喬伊!其實,你的代碼運行良好。唯一的問題是:在「提交」按鈕被禁用的情況下,用戶不完全確定:他哪裏出錯了?大聲笑。他知道表單有問題,因爲「提交」按鈕不起作用。但是,除非他以某種方式通知電子郵件不匹配,否則他不知道要尋找什麼))(雖然,它當然應該是非常明顯的;但是,但是,我仍然嘗試創建一個與用戶相同的表單儘可能友好) – newuserphp 2015-02-10 12:09:03

+0

看看基礎框架,因爲他們有一個JavaScript驗證器內置到他們的形式。它可以幫助您製作用戶友好的表單,並幫助您構建HTML。或者你可以在這裏繼續添加你的解決方案...最終你需要依靠服務器端驗證(PHP/etc)以及客戶端JS驗證......通常,瀏覽器變得越來越聰明,他們正在爲你做這件事。您可以添加諸如required =「required」之類的東西到您的輸入中,而現代瀏覽器將爲您做簡單的驗證並要求用戶輸入該字段。 – Joey 2015-02-10 13:21:21

+0

我已經在使用「必需」功能。但是,當我嘗試「匹配電子郵件」---即,確保第二封電子郵件(確認電子郵件)與第一封電子郵件相同時,這並沒有幫助我。 – newuserphp 2015-02-10 13:52:20

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> 
+0

感謝您的回覆,Dhruv Ramani。不幸的是,你的代碼不起作用。 :((((( – newuserphp 2015-02-10 11:42:37

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> 
+0

謝謝,歐麥爾。我其實昨天試過這個代碼,它工作正常..........但問題是:即使我收到警報消息,並沒有輸入正確的電子郵件,我仍然可以發送/提交表格,這就是我在原文中所說的內容,除非電子郵件字段相互匹配,否則我不希望提交表格。 – newuserphp 2015-02-10 13:56:15