2016-05-30 18 views
0

Ich habe ein Problem bei der Checkbox Ajax Validierung?Wie Checkbox Formular mit Ajax zu validieren?

Meine alle anderen Form zeigt Ajax-Validierung außer Kontrollkästchen kann eingegeben werden Formular hat Wert bereits, aber ich konnte nicht Lösung herausfinden.

Meine Ajax ...

$(function() { 


      (function() { 

      $('.load').addClass('hide'); 

      $(document).on('submit', '.add_restaurant', function() { 

       // remove prior message which might have accumulated during earlier update 
       $('.error-message').each(function() { 
       $(this).removeClass('make-visible'); 
       $(this).html(''); 
       }); 


       $('input').each(function() { 
       $(this).removeClass('errors'); 
       }); 



       // current form under process 
       var current_form = $(this); 

       // === Dynamically get all the values of input data 
       var request_data = {}; 

       request_data['_token'] = $(this).find('input[name=_token]').val(); 


       current_form.find('[name]').each(function() { 
       request_data[$(this).attr("name")] = $(this).val(); 
       }); 

       $('.load').addClass('make-visible'); 
       // == Dynamic value retrieval ends here 

       $.post(
       $(this).attr('action'), 
       request_data, 
       function(data) { 

        console.log(data); 

        if (data.status == 'success') { 

        $('.load').removeClass('hide'); 

        console.log('success'); 


        if (window.location.href.indexOf("reservation") > -1) { 
         window.location.href = data.url; 
        } else { 
         location.reload(); 
        } 

        //location.reload(); 

        } else if (data.status == 'fails') { 

        for (var key in data.errors) { 

         // skip loop if the property is from prototype 
         if (!data.errors.hasOwnProperty(key)) continue; 

         var error_message = data.errors[key]; 

         current_form.find("[name=" + key + "]").addClass('errors'); 

         var parent = current_form.find("[name=" + key + "]").parent(); 
         parent.find('.error-message').addClass('make-visible').html(error_message); 

        } 

        } 

       } 
      ); 

      return false; 

     }); 

     })(); 

}); 

ist die Klinge Vorlage, aber ich bin hier nur Checkbox Form, da es ziemlich lange Form ist.

<label>Gender</label> 
<div class="gender radiobtn"> 
    <input type="radio" name="gender" value="M" id="male"> 
    <label for="male">Male</label> 
    <input type="radio" name="gender" value="F" id="female"> 
    <label for="female">Female</label> 
    <span class="error-message"></span> 

</div> 

Wo ich falsch bin? Vielen Dank im Voraus

+0

Thanks @ Ognj3n für meine code.Will Formating Ihnen helfen bitte immer solutiontoo –

Antwort

0

Eigentlich habe ich answer.What war passiert, dass es nahm bereits Wert, so Fehler Objekt wurde nicht anhängen.

Was wir brauchten, war den Wert zu leeren und zu überprüfen, ob das Formular aktiviert ist oder nicht und einfach in die Datenbank einfügen.

hier, wie ich durch eine Menge Forschung lösen

 current_form.find('[name]').each(function(){ 
      request_data[$(this).attr("name")] = $(this).val(); 


      if($('#male').is(":checked")) 
      { 
       request_data['gender']='M'; 
      } 
      if($('#female').is(":checked")) 
      { 
       request_data['gender']='F'; 
      } 

Danke @ Jeric Cruz für wertvolle Anregung

0

da Sie Wert auf beiden Kontrollkästchen zugewiesen, wenn die Validierung Code laufen, es gültig ist. Wert = "M" und Wert = "F"

Was Sie tun können, ist zu überprüfen, ob eines dieser Kontrollkästchen aktiviert ist oder nicht.

current_form.find('[name]').each(function(){ 
     request_data[$(this).attr("name")] = $(this).val(); 
    }); 

if (!$("#male").is(":checked") && !$("#female").is(":checked")) 
      { 
       //gender has no check 
       $(".gender").addClass("errors") 
      } 

wenn die .is ("geprüft") nicht versuchen, arbeiten sie in .attr geändert ("geprüft") == "false"

+0

Nun, es Arbeit Ball hielt in jedem Fall.Objekt Fehler wird nicht für checkbox @ Jeric Cruz –

+0

Hier, wie ich versuche, Ihren Code zu verwalten, aber fehlschlägt.Könnte man darauf schauen: @Jeric Cruz –

+0

wenn (! data.errors.hasOwnProperty (key)) fortfahren; if ($ (this) .attr ("Name") == "Geschlecht" &&! $ (This) .attr ("überprüft") == "false") { var error_message = data.errors [Schlüssel ]; current_form.find ("[Name =" + Schlüssel + "]"). AddClass ('Fehler'); var parent = current_form.find ("[Name =" + Schlüssel + "]"). Parent(); parent.find ('. Error-message'). AddClass ('make-visible') .html (error_message); } –