-1

これが私の検証コードです:

  function validateEnquiryForm() {
      var x = document.forms["enquiry"]["name"].value;
      if(x == null || x == "" || x == "Name") {
          $('#name').removeClass('custom').addClass('error');
          $('.name-error').show();
          //return false;
      } else if(x !== null || x !== "" || x !== "Name") {
          $('#name').removeClass('error').addClass('custom');
          $('.name-error').hide();
      }
      var x = document.forms["enquiry"]["phone"].value;
      if(x == null || x == "" || x == "Phone Number") {
          $('#phone').removeClass('custom').addClass('error');
          $('.phone-error').show();
          //return false;
      } else if(x !== null || x !== "" || x !== "Phone Number") {
          $('#phone').removeClass('error').addClass('custom');
          $('.phone-error').hide();
      }
      var x = document.forms["enquiry"]["requirements"].value;
      if(x == null || x == "" || x == "Add any other extra requirements here...") {
          $('#requirements').removeClass('textarea-1').addClass('error');
          $('.requirements-error').show();
          //return false;
      } else if(x !== null || x !== "" || x !== "Add any other extra requirements here...") {
          $('#requirements').removeClass('error').addClass('custom');
          $('.requirements-error').hide();
      }
      var x = document.forms["enquiry"]["summary"].value;
      if(x == null || x == "" || x == "Summarise your project in a few key words...") {
          $('#summary').removeClass('custom').addClass('error');
          $('.summary-error').show();
          //return false;
      } else if(x !== null || x !== "" || x !== "Summarise your project in a few key words...") {
          $('#summary').removeClass('error').addClass('custom');
          $('.summary-error').hide();
      }
      var x = document.forms["enquiry"]["email"].value;
      var atpos = x.indexOf("@");
      var dotpos = x.lastIndexOf(".");
      if(atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
          $('#email').removeClass('custom').addClass('error');
          $('.email-error').show();
          //return false;
      } else if(atpos > 1 || dotpos > atpos + 2 || dotpos + 2 <= x.length) {
          $('#email').removeClass('error').addClass('custom');
          $('.email-error').hide();
      }
      $('.error-banner').effect("pulsate", {
          times: 2
      }, 1000);
      return false;
  }

コードが実行されると、すべてのフィールドが空白かどうかがチェックされます。1つまたは複数が誤って.error-bannerパルスに入力され、個々のメッセージが表示された場合。問題は、フォームが正しく入力されたときに、このバナーがまだ点滅していることです。誰かが私がどこで間違っているのか教えてもらえますか..?

4

1 に答える 1

2

私の知る限り、関数は無条件にこのブロックで終了します。

$('.error-banner').effect("pulsate", {
  times: 2
}, 1000);
return false;

多分それを次のように変更します:

var valid = true;

// in your error handling conditionals, set valid to false:
if(x == null || x == "" || x == "Phone Number") {
    $('#phone').removeClass('custom').addClass('error');
    $('.phone-error').show();
    valid = false;
} 

...

if (!valid) {
  $('.error-banner').effect("pulsate", {
    times: 2
  }, 1000);
}
return valid;

しかし、あなたのアプローチには改善の余地がたくさんあるというコメントの大多数に同意する必要があります。

于 2012-07-07T14:42:42.940 に答える