2015-12-12 56 views
-1

我正在嘗試爲應用程序開發一個插件,讓用戶通過發送電子郵件邀請他們的朋友使用該應用程序。像Dropbox這樣的用戶可以讓用戶邀請朋友並獲得額外的空間。驗證表單的textarea - jQuery

我想驗證我的形式(文字區域)與jQuery的唯一領域(我是新來的JQuery)submiting它和PHP處理之前。

這textarea的將包含電子郵件地址,如果有多個用逗號分隔。甚至不知道textarea是否是我正在嘗試完成的最佳工具。反正這是我的表單代碼:

<form id="colleagues" action="email-sent.php" method="POST"> 
 
    <input type="hidden" name="user" value="user" /> 
 
    <textarea id="emails" name="emails" value="emails" placeholder="Example: [email protected], [email protected], [email protected]"></textarea> 
 
\t </br><span class="error_message"></span> 
 
    <!-- Submit Button --> 
 
    <div id="collegues_submit"> \t \t \t \t 
 
     <button type="submit">Submit</button> 
 
    </div> 
 
</form>

這裏是我的jQuery的嘗試沒有成功:

//handle error 
 
    $(function() { 
 
      $("#error_message").hide(); 
 
      var error_emails = false; 
 

 
      $("#emails").focusout(function() { 
 
      check_email(); 
 
      }); 
 

 
     function check_email() { 
 
      if(your_string.indexOf('@') != -1) { 
 
      $("#error_message").hide(); 
 
      } else { 
 
      $("#error_message").html("Invalid email form.Example:[email protected], [email protected], [email protected]"); 
 
      $("#error_message").show(); 
 
      error_emails = true; 
 
      } 
 
      } 
 
      
 
      $("#colleagues").submit(function() { 
 
      error_message = false; 
 
      
 
      check_email(); 
 
      
 
      if(error_message == false) { 
 
       return true; 
 
      } else { 
 
       return false; 
 
      } 
 
    });

我希望這個問題是清楚足夠了,如果你需要更多的信息,請讓我知道。

非常感謝您的所有幫助和建議。

+1

你可能想嘗試做動態字段(如你點擊'+'標誌,它增加了一個新的文本輸入字段),因此用戶將每個字段添加一個電子郵件。可能更容易管理。你可以使用'append()'。 – Rasclatt

+0

我不知道爲什麼我在我的問題上有一個負面的觀點。我們來到這個網站學習和尋求幫助,我不是一個專業的程序員,但它是我的歡樂,我正在努力學習儘可能多的東西。這種類型的行爲使人們在不確定某事時不會再問,認爲有人可能會因爲代碼被破壞而給你一個負面的觀點。這就是爲什麼人們首先來到這個網站(因爲代碼被破壞並尋求幫助,對於那些試圖讓我看到正確的道路的人,謝謝你幫助了我很多, –

回答

0

我會用,就像我上面的評論,append()prepend(),只是添加字段。正如另一篇文章中提到的,客戶端使用jQuery驗證,但是您應該確保使用循環驗證服務器端並且filter_var($email, FILTER_VALIDATE_EMAIL)。這裏是prepend()的一個很基本的例子:

<form id="colleagues" action="" method="POST"> 
    <input type="hidden" name="user" value="user" /> 
    <input name="emails[]" id="starter" placeholder="Email address" /> 
    <div id="addEmail">+</div> 
    </br><span class="error_message"></span> 
    <!-- Submit Button --> 
    <div id="collegues_submit">     
     <button type="submit">Submit</button> 
    </div> 
</form> 
<script> 
$(document).ready(function() { 
    $("#addEmail").click(function() { 
     $("#colleagues").prepend('<input name="emails[]" placeholder="Email address" />'); 
    }); 
}); 
</script> 
+0

謝謝你。 。更容易驗證。是的,我也驗證了它的服務器端。 –

0

您的代碼看起來可能正確,但是您使用的是不好的技術。我的建議是使用jquery validation plugin來處理textarea驗證。另請注意。這個問題可能有很多解決方案,但你應該堅持簡單的解決方案。我看到的第一個問題是:button標籤不具有type屬性。您正在更改#error_message html,而不是文本。等等......

0

很少有錯誤,我記了下來:

  1. 這裏發佈的代碼段已失蹤括號});在最後。
  2. 另外,什麼是your_string變量函數check_email
  3. 此外,ERROR_MESSAGE分配假總是那麼提交方法將返回true始終。

要解決這個問題,應該可以幫助您。

0
var array = str.split(/,\s*/); 
    array.every(function(){ 
    if(!validateEmail(curr)){ 
    // email is not valid! 
return false; 
    } 
    }) 

//碼距離著名的Email validation

function validateEmail(email) { 
    var re = /^(([^<>()[\]\\.,;:\[email protected]"]+(\.[^<>()[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
    return re.test(email); 
} 
0

你好,請使用以下的js代碼,

$('#emails').focusout(function(e) { 
    var email_list = $('#emails').val(); 
    var email_list_array = new Array(); 
    email_list_array = email_list.split(","); 
    var invalid_email_list=' '; 
    $.each(email_list_array, function(index, value) { 

    if(!validEmail(value)) 
    { 
    invalid_email_list=invalid_email_list+' '+value+','; 
    } 
    }); 
     console.log(invalid_email_list+' is not correct format.'); 
    alert(invalid_email_list+' is not correct format.'); 
}) 

function validEmail(v) { 
var r = new RegExp("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"); 
return (v.match(r) == null) ? false : true; 
} 

如果您需要檢查更多的正則表達式就去做validEmail()函數。我希望這將有助於理清。

謝謝