我的页面上有按钮
<button type="reset" class="abort-selection">Clear</button>
当我单击所有字段时,复选框将重置为默认值。好的。
现在我想在点击此按钮后发送帖子请求。 我在现有的发送帖子功能上执行此操作
<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
函数阻止重置并执行自己的功能。
那么如何重置并在发送此Post请求后重置复选框和下拉列表?
答案 0 :(得分:2)
如果您的表单正在提交,这将有效
将$('#form-id').reset();
结束ajax成功函数
将“#form-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');