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函数之前。它将在发布前重置表单。。