系列文章目录
前言
问题 :如何快速获取form表单内的内容,而不是一个一个的获取。
1、这段时间在工作室遇到一个问题。因为之前一直使用的是一些js 框架所以也没去想这些问题。而这次任务中脱离框架后这个问题就显现出来了。一个一个的获取input的啊select 啊 文本域里的内容实在是太麻烦了索性自己封装个方法,日后用起来也方面。
提示:以下是本篇文章正文内容,下面案例仅供参考
一、方法
为节约时间把方法放在第一条
<form action="javascript::" id='form1' utf-8">
<input type="text" name="name1">
<input type="text" name="name2">
<input type="text" name="name3">
<input type="text" name="name4">
<input type="text" name="name5">
<select name="name6" >
<option value=""></option>
option
</select>
</form>
/**
*content:将form标签内的内容转化为键值对,后台好处理。
*param:form (form对象。如·$('#form1'))
*return: {name1:val1,name2:vla2,name3:val3,......}
*/
function serializeObject(form){
var o = {};
form.find(".ui-select").each(function(r){
var name=$(this).attr("name");
var value=$(this).attr("data-value");
o[name]= value;
})
$.each(form.serializeArray(),function(index){
if(o[this['name']]){
o[this['name']] = o[this['name']] + ","+this['value'];
}else{
o[this['name']] = this['value'];
}
});
return o;
}
二、jq 涉及方法说明
1.serialize() 方法:
serialize() 方法通过序列化表单值,创建 URL 编码文本字符串。
您可以选择一个或多个表单元素(比如 input 及/或 文本框),或者 form 元素本身。
序列化的值可在生成 AJAX 请求时用于 URL 查询字符串中,这样在ajax提交表单数据时,就不用一一列举每一个参数,只需将data参数设置为:$(“form”).serialize()即可。
语法如下:
$(selector).serialize();
输出标准的查询字符串:a=1&b=2&c=3&d=4&e=5
注释:只会将“成功的控件”序列化为字符串。(即指没被禁用的元素)如果不使用按钮来提交表单,则不对提交按钮的值序列化。如果要表单元素的值包含到序列字符串中,元素必须使用 name 属性。
2.serializeArray() 方法:
serializeArray() 方法通过序列化表单值来创建对象数组(名称和值)。
您可以选择一个或多个表单元素(比如 input 及/或 textarea),或者 form 元素本身。
代码如下:
//格式:
var jsonData = $("form").serializeArray();
注意:此方法返回的是 JSON 对象而非 JSON 字符串。
返回的 JSON 对象是由一个对象数组组成的,其中每个对象包含一个或两个名值对 —— name 参数和 value 参数(如果 value 不为空的话)。举例来说:
[
{name: 'firstname', value: 'Hello'},
{name: 'lastname', value: 'World'},
{name: 'alias'}, // 值为空
]
特别说明,元素不能被禁用(禁用的元素不会被包括在内),并且元素应当有含有 name 属性。提交按钮的值也不会被序列化。文件选择元素的数据也不会被序列化。
注意:1、不被禁用;2、包含name属性