Jquery 写入隐藏字段的无尽输入字段

Jquery 写入隐藏字段的无尽输入字段,jquery,plugins,input,Jquery,Plugins,Input,我正在寻找一种jquery解决方案,它使用来自无限多输入框的值填充隐藏字段。隐藏字段中的值应以“;”分隔。应该始终有一个空的输入字段。在该输入字段中输入值后,应显示一个新值。当一个字段为空时,应取消显示另一个空字段 如果有一个插件可以做到这一点,那么如果你能给我指出正确的方向,我将非常高兴 与此同时,我自己已经拼凑了一些东西,我将作为答案发布。下面的代码将为每个应用endlessinput类的字段应用此逻辑。可能不是最漂亮的代码,但它实现了我希望它实现的功能:- $("input[type='h

我正在寻找一种jquery解决方案,它使用来自无限多输入框的值填充隐藏字段。隐藏字段中的值应以“;”分隔。应该始终有一个空的输入字段。在该输入字段中输入值后,应显示一个新值。当一个字段为空时,应取消显示另一个空字段

如果有一个插件可以做到这一点,那么如果你能给我指出正确的方向,我将非常高兴


与此同时,我自己已经拼凑了一些东西,我将作为答案发布。

下面的代码将为每个应用endlessinput类的字段应用此逻辑。可能不是最漂亮的代码,但它实现了我希望它实现的功能:-

$("input[type='hidden'].endlessinput").each(function (i, n) {
    $parent = $(n).parent();
    $br = $('<br />');
    // define a textbox for each value and add an additional empty one
    var createInput = function () {
        var input = $('<input id="'+guid()+'" type="text" value="" />');
        input.unbind('keyup');
        input.bind('keyup', function () {
            // rebuild the array with values
            var arr = [];
            $("input[type='text']", $parent).each(function (k, y) {
                arr.push($(y).val());
            });
            $(n).attr('value', arr.join(';'));
            // Add another input field if no empty one is available
            emptyInputs = $('input:text[value=""]', $parent).filter(function (o, p) { return $(p).val() == '' });
            if (emptyInputs.length == 0) {
                $($("br", $parent).last().length > 0 ? $("br", $parent).last()[0] : $(n)).after(createInput(), "<br />");
            } else if (emptyInputs.length > 1) {
                emptyInputs.not(':first').each(function (ix, inp) {
                    $(inp).next('br').remove()
                    $(inp).remove();
                });
            }
        });
        return input;
    }

    // get values in an array
    var values = $(n).val().split(';');
    $(values).each(function (j, x) {
        var newInput = createInput();
        newInput.attr('value', x);
        $($("br", $parent).last().length > 0 ? $("br", $parent).last()[0] : $(n)).after(newInput, "<br />");
    });
    $($("br", $parent).last().length > 0 ? $("br", $parent).last()[0] : $(n)).after(createInput(), "<br />");
});

你在不到3分钟的时间里就自己的问题写了一个答案?看着答案,似乎写出来的时间肯定超过了3分钟。你想把它添加到你的问题中还是留作回答?我这样做是因为我想把它放在stackoverflow上,以备将来参考,因为我还没有找到一个合适的解决方案。我希望通过这种方式为社区做出贡献。如果有别的办法,我会适应的。为什么要把它放在这个问题上呢?