jQuery:代码正在执行,即使它不应该执行

时间:2014-11-27 18:45:56

标签: jquery ajax if-statement

在下面的代码中,我正在为更多表单回收相同的Ajax函数。提交数据后,必须重置其中一个表单。问题是即使if (data)事件发生,也会执行重置代码(在第6行)。怎么会这样?

$('input[type="button"][id^=data_]').click(function () 
    if ($(this).attr('id') == 'data_update') {
        [...]
    } else if ($(this).attr('id') == 'data_submit') {
        [...]
        var extra_success = $('form[name="data_submit"] input[type=text]').val('');
    };
    $.ajax({
        [...]
        success: function(data) {
            if (data) {
                $(div_for_response).html(data).css('color','red');
            } else {
                $(div_for_response).html('Success!').css('color','green');
                if (extra_success) {
                    extra_success
                }
            }
        }
    });
});

3 个答案:

答案 0 :(得分:1)

尝试使用=== 你需要精确比较

$('input[type="button"][id^=data_]').click(function () 
    if ($(this).attr('id') === 'data_update') {
        [...]
    } else if ($(this).attr('id') == 'data_submit') {
        [...]
        var extra_success = $('form[name="data_submit"] input[type=text]').val('');
    };
    $.ajax({
        [...]
        success: function(data) {
            if (data) {
                $(div_for_response).html(data).css('color','red');
            } else {
                $(div_for_response).html('Success!').css('color','green');
                if (extra_success) {
                    $('form[name="data_submit"] input[type=text]').val('');
                }
            }
        }
    });
});

答案 1 :(得分:1)

也许你在创建变量时重置val而不是试试这个:

您将在第一个if创建变量时传递。即使你进入if(data),当创建变量时,该值也会被删除。

$('input[type="button"][id^=data_]').click(function () 
    if ($(this).attr('id') == 'data_update') {
        [...]
    } else if ($(this).attr('id') == 'data_submit') {
        [...]
        var extra_success = $('form[name="data_submit"] input[type=text]');
    };
    $.ajax({
        [...]
        success: function(data) {
            if (data) {
                $(div_for_response).html(data).css('color','red');
            } else {
                $(div_for_response).html('Success!').css('color','green');
                if (extra_success) {
                    extra_success.val('');
                }
            }
        }
    });

});

如果您的if声明合适,应该可以解决问题。

答案 2 :(得分:1)

你的问题是,我认为你试图在你的变量var extra_success中为你的变量$('input[type="button"][id^=data_]').click(function () if ($(this).attr('id') == 'data_update') { [...] } else if ($(this).attr('id') == 'data_submit') { [...] var extra_success = function() { $('form[name="data_submit"] input[type=text]').val(''); }; }; $.ajax({ [...] success: function(data) { if (data) { $(div_for_response).html(data).css('color','red'); } else { $(div_for_response).html('Success!').css('color','green'); if (extra_success) { extra_success(); } } } }); }); 分配一个函数。尝试更改您的代码:

{{1}}

这样您就可以为变量分配一个函数,然后再调用它。