javascript - 撤消 AJAX 调用中复选框上的 PreventDefault

标签 javascript jquery ajax

当用户尝试检查未选中的复选框时(如果已选中,我将不执行任何操作),我会阻止该复选框被选中并通过 AJAX 调用对其进行验证。但我不知道如何再次“检查”它。我尝试使用 $(this).trigger('click'); 但它不起作用。

我还尝试将 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

        }

    });

});

最佳答案

使用 context: 选项将 this 传递给 success 函数,然后设置框的 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));
            }
        });

关于javascript - 撤消 AJAX 调用中复选框上的 PreventDefault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29954209/

相关文章:

javascript - 将 FormData 中的多个 JSON 列表和图像发送到 C#

javascript - 错误 : valLists is undefined in pagination of table rows using AngularJS, AJAX

c# - 使用 jQuery 回发到 Controller

javascript - 如何将事件监听器放置到页面上具有不同名称的 20 个表单

javascript - 在每个对象数组之间插入一个字符串,最后一个标记具有特定字符串

jquery - 使用jquery自动完成难度

javascript - JQuery:.on 处理程序未附加到动态添加的元素

javascript - 表单提交功能不起作用

javascript - 访问先前由另一个 html 文件填充的对象

javascript - 使用js/html5开始游戏开发