0

firstName と lastName という 2 つのフォームがあるとします。

個別にテストした英数字検証方法があります。

   function alphaNumericValidation(Name)
   {
     if(/[^a-zA-Z0-9]/.test(firstName.value) || firstName.value == "") 
     {
       Name.style.border = "1px solid red";
       Name.focus();
       return false;
    }
    return true;
   }

今、私はコードが提出する検証方法を持っています:

 <td><input type="submit" name="smbt" id="smbt" value="Next" class="nextBtn" onclick="return validation();"/></td>

検証方法は次のように書かれています

  function validation()
  {
    var firstName = document.getElementById("firstName");
    var lastName = document.getElementById("lastName");

    if (alphaNumericValidation(firstName))
    {
        if (alphaNumericValidation(lastName))
        {
            return true;
        }
   }
   else
            return false;

ただし、ロジックが間違っており、意図したとおりに機能しません。私は何を間違っていますか?

4

1 に答える 1

1

これを試して:

function alphaNumericValidation(Name) {
  if(/[^a-zA-Z0-9]/.test(Name.value) || Name.value == "") {
    Name.style.border = "1px solid red";
    Name.focus();
    return false;
  }
  return true;
}

にパラメーターとして(または)を渡しているので、そこにあるfirstNameはずalphaNumericValidationです。NamefirstNamelastNameNamealphaNumericValidation

編集

が有効で無効なvalidation()場合のみ、関数は何も返しません。firstNamelastName

function validation() {
  var firstName = document.getElementById("firstName");
  var lastName = document.getElementById("lastName");

  if (alphaNumericValidation(firstName)) {
    if (alphaNumericValidation(lastName)) {
      return true;
    }
  // <-- When it gets to here, nothing is returned.. you could add `return false;` here to fix it.
  }
  else
    return false;

代わりにこれを試してください:

if (alphaNumericValidation(firstName) && alphaNumericValidation(lastName)) {
  return true;
}
else
  return false;

編集 2

関数が常に何かを返すことを確認している限り、if ステートメントを if ステートメント内に入れ続けることができます。

あなたの場合、私はおそらく次のように書くでしょう:

function validation() {

  var firstName = document.getElementById("firstName");
  var lastName = document.getElementById("lastName");

  var valid = true;

  valid = valid ? alphaNumericValidation(firstName) : false;
  valid = valid ? alphaNumericValidation(lastName) : false;

  return valid;

}

これにより、いずれかが返されるまで検証が実行されfalse、その後はスキップされてvalidation()返されfalseます。

于 2013-04-29T21:15:38.033 に答える