Javascript 单击重置按钮后发送post请求

Javascript 单击重置按钮后发送post请求,javascript,jquery,Javascript,Jquery,我的页面上有一个按钮 <button type="reset" class="abort-selection">Clear</button> 清除 单击时,所有字段和复选框都将重置为默认值。没关系 现在我想在点击这个按钮后发送post请求。 我在现有的send Post功能上执行此操作 <script> $(function() { $('div.list input[type=checkbox]').on('change',onValueChang

我的页面上有一个按钮

<button type="reset" class="abort-selection">Clear</button>
清除
单击时,所有字段和复选框都将重置为默认值。没关系

现在我想在点击这个按钮后发送post请求。 我在现有的send Post功能上执行此操作

<script>


$(function() {

$('div.list input[type=checkbox]').on('change',onValueChange);     
$('div.selector select').on('change', onValueChange);
$('button[type=reset]').on('click', onValueChange);

function onValueChange() {

        var Checked = {};
        var Selected = {};
    // Hold all checkboxes
        $('div.list input[type=checkbox]:checked').each(function () {
            var $el = $(this);
            var name = $el.attr('name');
            if (typeof (Checked[name]) === 'undefined') {
                Checked[name] = [];
            }
            Checked[name].push($el.val());
        });
    // Hold all dropdowns
        $('div.list select').each(function () {

            var $el = $(this);
            var name = $el.attr('name');

                if (!!$el.val()) {
                    Selected[name] = $el.val();
                }
        });

// Put all together to POST 
    $.ajax({
        url: '/Search.asp',
        type: 'POST',
        data: $.param(Selected) + "&" + $.param(Checked),
        dataType: 'text',
        success: function (data) {
            $("#ExSearchForm").html(data)
                .find('div.list input[type=checkbox],div.selector select').each(function () {
                    var $el = $(this);
                    var name = $el.attr('name');
                    var value = $el.attr('value');

                    if (Checked[name] && Checked[name].indexOf(value) !== -1 ) {
                        $el.prop('checked', true);
                    }
                    if (Selected[name]) {
                        $el.val(Selected[name]);
                    }
                });
        }
    });
};
});
</script>

$(函数(){
$('div.list input[type=checkbox]')。on('change',onValueChange);
$('div.selector select')。on('change',onValueChange);
$('button[type=reset]')。在('click',onValueChange)上;
函数onValueChange(){
var Checked={};
所选变量={};
//保留所有复选框
$('div.list input[type=checkbox]:checked')。每个(函数(){
var$el=$(本);
变量名称=$el.attr('name');
if(typeof(选中[名称])=“未定义”){
选中[名称]=[];
}
选中[name].push($el.val());
});
//保留所有下拉列表
$('div.list select')。每个(函数(){
var$el=$(本);
变量名称=$el.attr('name');
如果(!!$el.val()){
所选[名称]=$el.val();
}
});
//拼凑
$.ajax({
url:“/Search.asp”,
键入:“POST”,
数据:$.param(选中)+“&”+$.param(选中),
数据类型:“文本”,
成功:功能(数据){
$(“#ExSearchForm”).html(数据)
.find('div.list input[type=checkbox],div.selector select')。每个(函数(){
var$el=$(本);
变量名称=$el.attr('name');
var值=$el.attr('value');
如果(选中[名称]&&选中[名称].indexOf(值)!=-1){
$el.prop('勾选',正确);
}
如果(选中[名称]){
$el.val(选定[名称]);
}
});
}
});
};
});
以这种方式重置不起作用,看起来像是
onValueChange
功能阻止重置并执行自己的功能


那么,如何使用重置的复选框和下拉列表重置和发送此Post请求?

如果您的表单正在提交,则此操作将有效

放置
$('#表单id').reset()ajax成功函数的结尾
用您的表单id替换“#表单id

$.ajax({
        url: '/Search.asp',
        type: 'POST',
        data: $.param(Selected) + "&" + $.param(Checked),
        dataType: 'text',
        success: function (data) {
            $("#ExSearchForm").html(data)
                .find('div.list input[type=checkbox],div.selector select').each(function () {
                    var $el = $(this);
                    var name = $el.attr('name');
                    var value = $el.attr('value');

                    if (Checked[name] && Checked[name].indexOf(value) !== -1 ) {
                        $el.prop('checked', true);
                    }
                    if (Selected[name]) {
                        $el.val(Selected[name]);
                    }
                });
             $('#form-id').reset();
        }
    });
试着输入这些代码

//this will reset your checkboxes
$('div.list input[type=checkbox]').removeAttr('checked');
//this will reset your select box
$('div.selector select option').removeAttr('selected');

您是否使用断点进行了调试。在chrome中,它是
cmd+alt+i->Sources->选择你的js并设置断点。验证是否达到方法是的,没有错误,似乎
我没有DIV中的所有表单,而且我希望在post之前而不是事后重置。。我现在更新了。你可以把这两条线放在任何你需要的地方。它将重置您的复选框并选择“对不起,我的坏…”。。将这两个代码放在ajax函数之前。它将在发布前重置表单。。