我需要在div层中使用所有值输入字段形成一个字符串 - 使用jquery
<div id="selection">
<input class="field" id="1" type="hidden" value="A"/>
<input class="field" id="2" type="hidden" value="B"/>
<input class="field" id="3" type="hidden" value="C"/>
<input class="field" id="4" type="hidden" value="D"/>
</div>
<input type="button" id="button" value="generate"/>
以这种形式:
id[1]=val[A]&id[2]=val[b]...so on
jquery:
$(function() {
$('#button').click(function() {
//function goes here...
});
});
答案 0 :(得分:1)
如果您使用name
代替(或除此之外)id
:
<input class="field" name="1" type="hidden" value="A"/>
<input class="field" name="2" type="hidden" value="B"/>
<input class="field" name="3" type="hidden" value="C"/>
<input class="field" name="4" type="hidden" value="D"/>
您可以使用serialize
:
$('#button').click(function() {
alert($('#selection input').serialize());
});
给你
1=A&2=B&3=C&4=D
如果您真的想拥有id[x]
结构,可以为元素指定名称id[1]
,id[2]
等。
编辑:哦,不知怎的,我忽略了你想要val[x]
。只有当您真正将serialize
作为值放在字段中时,val[x]
才能实现此功能。但为什么你需要这样一个混淆的结构呢?
顺便说一下。你的按钮上缺少type="button"
。
答案 1 :(得分:1)
<script>
$(function() {
$('#button').click(function() {
var str = new Array();
var count = 0;
$('.field').each(
function()
{
str[count] = 'id['+$(this).attr('id')+']=val['+$(this).val()+']';
count++;
}
);
alert(str.join('&'))
});
});
</script>
<div id="selection">
<input class="field" id="1" type="hidden" value="A"/>
<input class="field" id="2" type="hidden" value="B"/>
<input class="field" id="3" type="hidden" value="C"/>
<input class="field" id="4" type="hidden" value="D"/>
</div>
<input id="button" value="generate" type="button"/>
答案 2 :(得分:1)
另一种解决方案,可以提供精确指定的输出并优雅地处理缺少的属性:
$(function() {
$('#button').click(function() {
var ResStr = $('#selection input.field');
ResStr = ResStr.map (function () {
var jThis = $(this);
var ID = jThis.attr ("id");
if (!ID) ID = "null";
var VAL = jThis.val ()
if (!VAL) VAL = "null";
return 'id[' + ID + ']=val[' + VAL + ']';
} ).get () .join ('&');
alert (ResStr);
} );
} );
答案 3 :(得分:0)
这将返回div中所有输入的所有html组合
var h = '';
var c = 0;
$('#selection input.field').each(function(){
h += '&id['+(++c)+']=val['+$(this).val()+']';
});
h = h.slice(1);
alert(h);