2015-04-29 2 views
0

Когда пользователь пытается установить флажок без отметки (я ничего не делаю, если он уже проверен), я запрещаю проверять флажок и проверять его с помощью вызова AJAX. Но я не могу понять, как «проверить» его снова. Я пытался использовать $(this).trigger('click');, но он не работает.Undo preventDefault on checkbox in AJAX call

Я также пробовал перемещение preventDefault на fail состояние. Но это заставило звонок работать, никогда. Думаю, потому что вызов AJAX меняет область действия.

$(document).ready(function(){ 
    $('input:checkbox').click(function(e) { 
     if($(this).prop('checked') && $(this).val()=='on') 
     { 
      e.preventDefault(); 

      var name = $(this).attr('name'); 
      var pivot_attendee_program = name.split(/\]\[|\[|\]/); 
      var data = { 
         'pivot' : pivot_attendee_program[0], 
         'attendee_id' : pivot_attendee_program[1], 
         'program_id' : pivot_attendee_program[2] 
         }; 

      //console.log(data); 

      $.ajax({ 
       type: "GET", 
       url: '{{ route('ageCheck') }}', 
       data: data, 
       success: function(result){ 

console.log('success'); 
        if(result == 'pass'){ 
         console.log('pass'); 
         $(this).trigger('click'); 
        } 
        else{ //result == 'fail' 

         console.log('fail'); 

        } 


       }, 
       error: function(result){ 
        alert(JSON.stringify(result)); 
       } 

      }); 

        //validate Age 
        //ajax check age of attendee against program      
        //ajax check age of attendee against program_seg 

     } 

    }); 

}); 
+0

объяснить это немного лучше. Если checkbos *** *** проверен, вы предотвратите поведение по умолчанию, и теперь он не установлен, и вам нравится снова его проверять? – adeneo

+0

'$ (this) .prop (" checked ", true)' – Barmar

+0

@Barmar - это близко, 'this' не является элементом в обработчике успеха ajax, иначе я думаю, что это ответ, но не уверен? – adeneo

ответ

1

использовать опцию context: передать this через функцию успеха, а затем установить checked свойства коробки:

 $.ajax({ 
      type: "GET", 
      url: '{{ route('ageCheck') }}', 
      data: data, 
      context: this, 
      success: function(result){ 
       console.log('success'); 
       if(result == 'pass'){ 
        console.log('pass'); 
        $(this).prop("checked", true); 
       } 
       else{ //result == 'fail' 

        console.log('fail'); 
       } 
      }, 
      error: function(result){ 
       alert(JSON.stringify(result)); 
      } 
     });