2015-06-17 213 views
0

我有我的按钮,页面发送POST请求点击

<button type="reset" class="abort-selection">Clear</button> 

。当我点击它的所有领域和复选框正在重置为默认值。没关系。

现在我想单击此按钮后发送发布请求。 我这样做是对现有发送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> 

这样复位不工作,看起来像onValueChange功能防止正在重置,做自己的功能。

那么如何重置,并发送此复位后复选框和下拉菜单后请求?

+0

你有没有断断续续的打断。在铬它'CMD + ALT +我 - >来源 - >选择你的JS和设置断点'。验证你是否达到了方法 – WebQube

+0

是的,没有错误,看起来像'

回答

2

如果表单提交该会工作

把AJAX成功的$('#form-id').reset();末功能
替换 “#形式-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'); 
+0

我没有窗体全部在divs中,我也想重置之前发布不是 –

+0

对不起。我现在更新它。你可以把这两条线放在你需要的任何地方。它会重置您的复选框并选择框 –

+0

不!我需要在发送POST重置值 –