1

我有这个提交功能,可以检查电子邮件字段是否具有格式正确的地址。工作正常。但是,我希望该字段允许空值,因为此特定输入是可选的,不是必需的。我知道这应该很简单,我错过了明显的。有人指出我正确的方向......

编辑:这次提供整个表单验证。每次我只是替换电子邮件部分时,它都会破坏其他部分......

function validateSMSForm()
{
if (SMSForm.PID_Form.value.length < 4)
{
alert("Please enter a valid Partner ID");
return false;
}
if (SMSForm.area.value.length < 3)
{
alert("Please enter a valid 10-digit cell phone number");
return false;
}
if (SMSForm.prefix.value.length < 3)
{
alert("Please enter a valid 10-digit cell phone number");
return false;
}
if (SMSForm.line.value.length < 4)
{
alert("Please enter a valid 10-digit cell phone number");
return false;
}

<!-- EMAIL VALIDATION HERE
  if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(form.emailaddress.value))  
    {  
    return (true)  
    }  
    alert("Please enter a valid email address")  
    return (false) 

-->
}
4

3 回答 3

2

首先添加对空/空字符串的检查:

if ((!form.emailaddress.value) || (/^\w+([.-]?\w+)@\w+([.-]?\w+)(.\w{2,3})+$/.test(form.emailaddress.value))) {
    //handle valid e-mail
} else {
    //handle invalid e-mail
}
于 2013-04-25T13:41:25.677 回答
1

像这样

假设

<form onsubmit="return validateSMSForm(this)">

JavaScript:

function isEmail(str) {
  return !str || /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/.test(str);
}

function validateSMSForm(SMSForm) {
  if (SMSForm.PID_Form.value.length < 4) {
    alert("Please enter a valid Partner ID");
    return false;
  }

  if (SMSForm.area.value.length < 3 ||
      SMSForm.prefix.value.length < 3 || 
      SMSForm.line.value.length < 4) {
    alert("Please enter a valid 10-digit cell phone number");
    return false;
  } 

  if (!isEmail(SMSForm.emailaddress.value)) {
    alert("Please enter a valid email address")  
    return false; // 
  }

  return true; // allow submission
}
于 2013-04-25T13:42:36.563 回答
0
var email = form.emailaddress.value;
if (!email){ return true } // this what your looking for?
if (/^\w+([.-]?\w+)@\w+([.-]?\w+)(.\w{2,3})+$/.test(email))
{
    return (true)
}
alert("Please enter a valid email address")
return (false) 
于 2013-04-25T13:38:07.217 回答