0

アップデート:

以下のスクリプトは、9 桁の電話番号を入力して 10 桁の電話番号を受け入れるとエラーをスローしますが、1 桁だけも受け入れます。

コレクター フィールドでは、11 個の数字のみを受け入れる必要があります。

電話番号を検証するように検証コードを修正しようとしています。これは簡単な作業のようですが、正しく機能させることができません。

スクリプトは、長さが 9 桁であるかどうか、スペース、ダッシュ、またはスペースがないことを確認する必要があります。電話番号が入力されていない場合は、必要なエラーが表示されます。たとえば、フィールドに 8 桁しか入力されていない場合、無効な電話エラーが発生するはずです。

この jsfiddle のコードを参照してください - http://jsfiddle.net/5zFqS/7/

function validate_required(field,alerttxt) {
  with (field) {
    if (value==null||value=="") {
      alert(alerttxt);return false;
    } else {return true;}
  }
}

function validate_email(field,alerttxt) {
  with (field) {
    apos=value.indexOf("@");
    dotpos=value.lastIndexOf(".");
    if (apos<1||dotpos-apos<2)
      {alert(alerttxt);return false;}
    else {return true;}
  }
}

function validate_Phone(field,alerttxt) {
    var phoneno = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;  
    if(field.value.match(phoneno))  {
      alert(alerttxt);return false;
    } else {return true;}
  }


function validate_collector(field,alerttxt) {
  var collect = /^\d{12}$/;  
    if(field.value.match(collect))  {
      alert(alerttxt);return false;
    } else {return true;}

}

function validate_form(thisform) {
  with (thisform) {
    if (validate_required(firstName,"Please enter your First Name")==false)
    {firstName.focus();return false;}

    if (validate_required(lastName,"Please enter your Last Name")==false)
    {lastName.focus();return false;}

    if (validate_required(email,"Please enter your Email Address")==false)
    {email.focus();return false;}

    if (validate_email(email,"Please enter a valid Email Address")==false)
      {email.focus();return false;}

    if (validate_required(phone,"Please enter your Phone")==false)
    {phone.focus();return false;}

    if (validate_Phone(phone,"Please enter a valid Phone Number")==false)
    {phone.focus();return false;}

    if (validate_required(province,"Please select your Province")==false)
    {province.focus();return false;}

    if (validate_required(collector,"Please enter Collector Number")==false)
    {collector.focus();return false;}

    if (validate_collector(collector,"Please enter a valid Collector Number")==false)
    {collector.focus();return false;}



    }
  }

構文エラーがあると思いますが、表示できません。

4

2 に答える 2

4

この行の末尾にあるセミコロンを削除する必要があります。

if (field.match(/^\d{9}/));

スペースなどは大丈夫だとおっしゃいました。その場合、それらを削除 (または無視) する必要があります。

var reg = /\D/g;    // \D identifies non-digit characters, g means 'global'
var stripped = "888-777 66st".replace(reg,"");
// returns: 88877766

また、withの使用は推奨されません

紛らわしいバグや互換性の問題の原因となる可能性があるため

MDN リファレンス

于 2013-07-02T20:59:34.753 に答える
0

それ以外の

if (field.match(/^\d{9}/))

これを使って

if (!field.match(/\d{9}/))
于 2013-07-02T21:07:02.713 に答える