JQuery使用ajax提交整个表单最简便的方法就是$('#form').serialize();但如果仅想保存表单中的部分数据,比如仅更新选中的条目,那么获取数据就比较麻烦了。
解决方法:新建一个表单,并把所有需要提交数据的元素html加入到这个表单,再序列化就可以了。
var elements=''; $('.needsave').each(function(){ elements+=$(this).html(); }); data=$('<form>').html(elements).serialize();
要注意一个问题是,使用以上方法拼接起来的表单,是获取不到select下拉框的值的,原因是下拉框选中时option并没有添加selected属性,因此可以再select中增加一个onchange
事件,用selected属性标记选中的值:
var v=$('select').val(); $('select').find('option').each(function(i){ if(v.length>0&&$(this).val()==v) $(this).attr('selected','selected'); else $(this).removeAttr('selected'); });
input的value,
$('input').attr('value',$('input').val());
textrea
$('textarea').text($('textarea').val());