-1

Facebox でカスタム フォーム サブミソン エラー ボックスを読み込もうとすると、いくつかのコードでテストするときに、.append() を複数回追加するのに問題があります。例のエラーの両方が失敗した場合は、1 つだけをロードして追加し、1 つを facebox にロードしますが、一度に 1 つずつ失敗した場合は、表示されるはずの正しいエラーが表示されます。

コードが乱雑で効率的でない場合は申し訳ありませんが、javascript は私の得意分野ではありません。

  $('#signup').submit( function() {
 var fname = $("#fname").val();
 var lname = $("#lname").val();
 var uname = $("#username").val();
 var pass = $("#password").val();
 var passc = $("#passwordc").val();
 var email = $("#email").val();                   

 if(/^[a-zA-Z0-9_]*$/.test(uname) == false) {
           //alert('Usernames can be alphanumeric but may include an underscore.');
       $("#errorholder").append('<tr><td style="margin: 0;">Usernames can be alphanumeric but may include a underscore.</td></tr>');
 }
 else if(/^[a-zA-Z']*$/.test(fname) == false) {
      //alert('First name may not contain numbers or symbols.');
      $("#errorholder").append('<tr><td style="margin: 0;">First name may not contain numbers or symbols</td></tr>');
 }
 else if(/^[a-zA-Z']*$/.test(lname) == false) {
      //alert('Last name may not contain numbers or symbols.');
 }
 else if(!$("#fname").val()){
      //alert('First name required');
 }
 else if(!lname){
      //alert('Last name required');
 }
 else if(!uname){
      //alert('Userame required');
 }
 else if(pass!=passc){
      //alert('Passwords don\'t match');
 }
 else if(pass.length<5){
      //alert('Password must be at least 5 characters.');
 }
 else if(!email){
      //alert('Email required');
 }  
 else if (!$("input:radio[name='gender']:checked").val()) {
          // alert('Please select gender.');
 }
 jQuery.facebox({ div: '#piksplay' });
 return false;

  });
});
4

1 に答える 1

2

複数の条件をテストしようとしていますが、else if. コードが条件を見つけるとすぐに、trueそれ以外は何もテストしないため、append毎回 1 つだけが起動されます。ifこれらはすべて別個のステートメントである必要があります。

于 2012-12-15T12:14:31.657 に答える