0

これが私のコードです。どこが壊れているのかわかりません。書き込まれた正しい正規表現の変数をチェックしないかのように動作します。どこが間違っているのかを理解する助けがあれば大歓迎です。

<script>

function allNumbers( field, msg ) {
var numberexp = /^[0-9]+$/;
if ( field.value.match( numberexp ) ) {
   return true;
} else {
   alert( msg );
   field.focus();
   return false;
}
}

function allLetters( field, msg ) {
var letexp = /^[a-zA-Z]+$/;
if ( field.value.match( letexp ) ) {
   return true;
} else {
   alert( Msg );
   field.focus();
   return false;
}
}

function notEmpty( field, msg ) {
if ( field.value.length == 0 ) {
   alert( msg );
   field.focus();
   return false;
}
return true;
}

function validateForm() {
    var a = document.getElementById('firstname');
    var b = document.forms["contactrecord"]["lastname"].value;
    var c = document.forms["contactrecord"]["phone"].value;
    var d = document.forms["contactrecord"]["address"].value;
    var e = document.forms["contactrecord"]["city"].value;
    var f = document.forms["contactrecord"]["state"].value;
    var g = document.forms["contactrecord"]["zip"].value;

   if ( allLetters( a, "Incorrect First Name" ) ) {
     if ( allLetters( b, "Incorrect Last Name" ) ) {
       if ( allNumbers( c, "Incorrect Phone Number" ) ) {
         if ( notEmpty( d, "Incorrect address" ) ) {
           if ( allLetters( e, "Incorrect City Name" ) ) {
             if ( allNumbers( g, "Incorrect Zip Code") ) {
                return true;
             }
           }
         }
       }
     }
   }
   return false;
}

</script>
4

2 に答える 2

0

これは私がする方法ではありませんが、それはあなたのコードです。関数がフォーム コントロールへの参照を期待しているのに、各フォーム コントロールの値を渡していました。

関数はフォームへの参照を期待するようになったため、次のようなことができることに注意してください。

<form onsubmit="validateForm(this);" ...>


function allNumbers(field, msg) {

  // If has a non-number character, return false
  if (/\D/.test(field.value)) {
    field.focus();
    return false;
  }
  return true;
}

// If value has a non-word character, return false
function allLetters(field, msg) {
  if (/\W/.test(field.value)) {
    field.focus();
    return false;
  }
  return true;
}

// If value has no characters, return false
function notEmpty(field, msg) {
  if (field.value.length == 0){
    alert(msg);
    field.focus();
    return false;
  }
  return true;
}

function validateForm(form) {
  var a = document.getElementById('firstname');
  var b = form.lastname;
  var c = form.phone;
  var d = form.address;
  var e = form.city;
  var f = form.state;
  var g = form.zip;

  if (allLetters(a, "Incorrect First Name") &&
      allLetters(b, "Incorrect Last Name")  &&
      allNumbers(c, "Incorrect Phone Number") &&
      notEmpty(d, "Incorrect address") &&
      allLetters(e, "Incorrect City Name") &&
      allNumbers(g, "Incorrect Zip Code")
   ) { 
     return true;
   }
   return false;
}
于 2013-10-10T01:14:35.110 に答える
0

私の推測では、 snameに属性がありません。inputそれらをそこに入れてください。

于 2013-10-10T01:09:23.650 に答える