1

我需要使用 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...


      });
    });
4

4 回答 4

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"了你的按钮。

于 2011-02-23T10:38:04.303 回答
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"/>
于 2011-02-23T10:46:55.820 回答
1

另一种提供精确指定输出并优雅处理缺失属性的解决方案:

在 jsFiddle 上查看它的实际效果

$(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);

    } );
} );
于 2011-02-23T11:16:28.573 回答
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);
于 2011-02-23T10:36:34.490 回答