Jquery 使用:输入时检查是否选中复选框/收音机
我想使用ajax发布HMTL表单的数据,以便它发布与我正常提交的数据相同的数据 在HTML5之前,我会这样做:Jquery 使用:输入时检查是否选中复选框/收音机,jquery,Jquery,我想使用ajax发布HMTL表单的数据,以便它发布与我正常提交的数据相同的数据 在HTML5之前,我会这样做: $(“输入[type='radio']:选中,输入[type='checkbox']:选中,文本区域,输入[type='text']) 因此,我一直在使用$('form:input'),因此它对于所有不同的类型=电子邮件/搜索/等等来说都是未来的证明 问题是,即使未选中复选框/收音机,它仍会发送其值。最好的办法是什么 代码: 您是否尝试过: $('#button').on('click
$(“输入[type='radio']:选中,输入[type='checkbox']:选中,文本区域,输入[type='text'])
因此,我一直在使用$('form:input')
,因此它对于所有不同的类型=电子邮件/搜索/等等来说都是未来的证明
问题是,即使未选中复选框/收音机,它仍会发送其值。最好的办法是什么
代码:
您是否尝试过:
$('#button').on('click', function(){
$.ajax({
url: 'myurl.com',
type: 'post',
data: $('form').serialize(),
dataType: 'json',
success: function() {
alert('success');
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
}))
正如蒂亚戈·赖斯的回答,您可以序列化表单。如果您想采用更灵活的方式,那么可以像下面这样遍历每个表单元素。这是不完整的代码段,所以请尝试理解
function getFormData()
{
var retObjectc = {};
$("#myform").find( 'input[type=text],input[type=time], input[type=hidden],input[type=checkbox],input[type=radio], textarea, select' )
.each( function (key,value)
{
if( $(value).prop("tagName") == "INPUT" )
{
if( $(value).prop("type") == "checkbox" )
{
retObjectc[$(value).prop("name")] = $(value).is(":checked");
}
else
{
retObjectc[$(value).prop("name")] = $(value).val();
}
}
else if( $(value).prop("tagName") == "SELECT" )
{
retObjectc[$(value).prop("name")] = $(value).val();
}
});
return JSON.stringify(retObjectc);
}
您是否尝试过使用
.prop()
?您想在发送前检查复选框是否选中以及输入是否为空,对吗?我只想让它发布与我正常提交表单相同的数据。输入将发布空数据,复选框仅在选中时发布。您可以发布您的代码吗?刚刚测试过,如果您选择完整表单,它工作正常。虽然我需要使用@Satpal方法来过滤选择
function getFormData()
{
var retObjectc = {};
$("#myform").find( 'input[type=text],input[type=time], input[type=hidden],input[type=checkbox],input[type=radio], textarea, select' )
.each( function (key,value)
{
if( $(value).prop("tagName") == "INPUT" )
{
if( $(value).prop("type") == "checkbox" )
{
retObjectc[$(value).prop("name")] = $(value).is(":checked");
}
else
{
retObjectc[$(value).prop("name")] = $(value).val();
}
}
else if( $(value).prop("tagName") == "SELECT" )
{
retObjectc[$(value).prop("name")] = $(value).val();
}
});
return JSON.stringify(retObjectc);
}