[英]Get an associative array from input using jQuery
我想使用jQuery(或直接在JS中)從具有多個文本輸入的表單中獲取關聯數組。 從那:
<form>
<input type="text" name="name[13]" value="test 1" />
<input type="text" name="name[14]" value="test 2" />
<input type="text" name="new_name[]" value="test 3" />
</form>
我想得到:
name : Array {
13 => "test 1",
14 => "test 2"
}
new_name : Array {
1 => "test 3"
}
我嘗試使用jQuery的序列化功能,它僅適用於像new_name這樣的數組。
謝謝你的幫助 ! 凱文
您可以嘗試如下操作:
var output = [];
$('input[type="text"]').each(function() {
var s = $(this).attr('name').match(/(.*)[(.*)]/);
var found = false;
for(x in output) {
if(x == s[0]) {
output[x].push({s[1]: $(this).val()});
found = true;
}
}
if(!found) {
output[s[0]] = [{s[1]: $(this).val()}];
}
});
這是我的方法(在這種特殊情況下,我將避免使用jQuery)
window.onload=function(){//$(document).ready(...) if you already using jQuery
var str,str2,arr1=[],arr2=[],inputs=document.getElementsByTagName("input");
for(var i=0,len=inputs.length;i<len;i++){
str=inputs[i].name;
if(inputs[i].type=='text'&&str.charAt(str.length-1)=="]"){
if(str.substr(0,5)=="name["){
str2=parseInt(str.split("name[")[1].split("]")[0]);
if(str2!=NaN){
arr1[str2]=inputs[i].value;
continue;//we move to the next i
}//else
}
if(str.substr(0,9)=="new_name["){
str2=parseInt(str.split("new_name[")[1].split("]")[0]);
if(str2!=NaN){
arr2[str2]=inputs[i].value;
}//else
}
}
}
alert(arr1[13]);//test 1
}
注意:當索引無效時,它不會將其添加到數組中,您可以輕松修改//else
以執行其他操作
如果您添加以下代碼並提交表單,您將在Firebug或Chrome控制台中獲得什么輸出:
$('form').submit(function() {
console.log($(this).serializeArray());
return false;
});
編輯:這是為了嘗試更詳細地了解OP的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.