2012-04-03 21 views
0

我在頂部添加了這個驗證電子郵件功能,我不知道如何使其生效。元素[6]這是在形式的電子郵件領域,我不知道該電子郵件驗證功能不能在javascript表單驗證中與元素[x]配合使用

return re.test(email); 

說法是所有關於這裏是 完整的腳本代碼:

<script type="text/javascript"> 

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


function validation(form) { 
  if(form.elements[3].value == '') { 
      alert('Please enter your first name'); 
      form.first_name.focus(); 
      return false; 
  } 

  if(form.elements[4].value == '') { 
      alert('Please enter your last name'); 
      form.last_name.focus(); 
      return false; 
  } 

  if(form.elements[6].value == '') { 
      alert('Please enter your email address'); 
      form.email.focus(); 
      return false; 

    if (validateEmail(email)) { 
    $("#result").text(email + " is a valid email address :)"); 
    $("#result").css("color", "green"); 
    } else { 
    $("#result").text(email + "is not a valid email address :("); 
    $("#result").css("color", "red"); 
    return false; 
    } 

  if(form.elements[7].value == '') { 
      alert('Please enter your telephone number'); 
      form.phone.focus(); 
      return false; 
  } 

  if(form.elements[17].value == '') { 
      alert('Please let us know what you are most interested in'); 
      form.phone.focus(); 
      return false; 
  } 

  if(form.elements[18].value == '') { 
      alert('Please enter the area you are most interested in'); 
      form.phone.focus(); 
      return false; 
  } 

  if(form.elements[20].value == '') { 
      alert('Please enter the low end of your budget'); 
      form.phone.focus(); 
      return false; 
  } 

  if(form.elements[21].value == '') { 
      alert('Please enter the high end of your budget'); 
      form.phone.focus(); 
      return false; 
  } 

  return true; 
} 
</script> 

回答

0

裏面你validation()被傳遞給validateEmail的函數變量email幾乎未定義。

您應該:

validateEmail(form.email.value); 

OR

validateEmail($('#email').val()); // considering that `email` field has id="email" 

希望這有助於...

1

功能:

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

有一個正則表達式對象(re) ,正則表達式對象使用test函數來測試傳遞給函數的電子郵件是否根據正則表達式進行驗證。 test函數返回true,如果它驗證爲電子郵件,則返回false

,你可以使用它像這樣:

if(!validateEmail(form.elements[6].value)) { 
    alert('Please enter a valid email address'); 
    form.email.focus(); 
    return false; 
} 

的測試功能是原產於正則表達式的對象,這意味着你的瀏覽器會知道如何使用它(規格爲測試功能:developer.mozilla.org/en/JavaScript/Reference/Global_Objects/)做

+0

我想我錯過了測試功能... – 2012-04-03 15:12:16

+0

我沒有看到一個測試功能然而...:/ – 2012-04-03 15:16:33

+0

http://stackoverflow.com/questions/46155/validate-email-address -in-javascript/46181#46181 – 2012-04-03 15:16:39

0

form.elements是您應該使用document.getElementById,而不是你在1996年選擇的DOM元素的方式:

var resultElement = $("#result"); 
var emailVal = document.getElementById('emailBoxId').value; 
if (validateEmail(emailVal)) { 
    resultElement 
     .text(emailVal + " is a valid email address :)") 
     .css("color", "green"); 
} else { 
    resultElement 
     .text(emailVal + "is not a valid email address :(") 
     .css("color", "red"); 
    return false; 
} 
+0

muwhahah ...我被迫使用'form.elements',因爲我不在控制我的ID,他們是由數據庫自動生成的:),而數據庫幾乎所有的ID都用'00' – 2012-04-03 15:05:45

0

創建變量email並將其值設爲form.elements[6].value

例如,

function validation(form) { 
    if(form.elements[3].value == '') { 
    alert('Please enter your first name'); 
    form.first_name.focus(); 
    return false; 
    } 
    //... 
    var email = form.elements[6].value 
    if (validateEmail(email)) { 
    $("#result").text(email + " is a valid email address :)"); 
    $("#result").css("color", "green"); 
    } else { 
    $("#result").text(email + "is not a valid email address :("); 
    $("#result").css("color", "red"); 
    return false; 
    } 
//... 
}