jQuery - 我可以从序列化表单字符串填充表单输入吗?

发布于 2024-12-05 01:23:41 字数 287 浏览 1 评论 0原文

鉴于我在页面上有某种形式,我知道我可以使用以下命令获取 unicode 序列化字符串。

var query = jQuery('#some-form').serialize();

也可以使用 $('#some-input').val(...)< 设置每个输入的值/代码>。假设重置了上面相同的表单,但我仍然有查询字符串 - 有没有一种简单的方法可以从该字符串填充表单?我意识到我可以解析它并单独设置每个输入/选择,但我正在寻找一个更简单的解决方案。谢谢。

Given that I have some form on a page, I know I can get a unicode serialized string using

var query = jQuery('#some-form').serialize();

It's also possible setting the value of each input with $('#some-input').val(...). Assuming that same form above was reset, but I still have the query string - is there a simple way to populate the form from that string? I realize I could parse it and set every input/select individually, but I was looking for a simpler solution. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

氛圍 2024-12-12 01:23:41

您可以将表单序列化为 JSON 数组,并使用 MVVM 映射插件(如 Knockout.js)自动填充形式。

请参阅在 jQuery 中序列化为 JSON

You could serialize the form into a JSON array and use an MVVM mapping plugin like Knockout.js to auto-fill the form.

See Serializing to JSON in jQuery

月朦胧 2024-12-12 01:23:41

jquery.deserialize 插件 应该可以帮助你。

jquery.deserialize plugin should help you.

心凉 2024-12-12 01:23:41

如果您的表单仅包含文本输入(不是数组),您可以尝试这个插件,我从其反序列化函数对应项(https://gist.github.com/rcmachado/242617#file-jquery-unserialize-js),但它不是返回对象,而是填充其适用的表单。

(function($){
    $.fn.fillformwithserialized = function(serializedString) {
        var str = decodeURI(serializedString);
        var pairs = str.split('&');
        var p, idx, val;
        for (var i=0, n=pairs.length; i < n; i++) {
            p = pairs[i].split('=');
            idx = p[0];

            var txtBox = this.find('#' + idx + ':input');
            if (txtBox.is(":text")) {
                txtBox.val(p[1]);
            }
        }

        return this;
    };
})(jQuery);

使用示例:

var dataSerialised = sessionStorage.getItem('frmVeryImportantStuff');

if (dataSerialised == null || !confirm("We could restore the previous version of the form you posted. Shall we?"))
return false;
else {
    $("#frmVeryImportantStuff").fillformwithserialized(dataSerialised);
}

显然,您首先需要将表单保存在 sessionStorage 中。
例子:

sessionStorage.setItem("frmVeryImportantStuff", $(frmVeryImportantStuff).serialize());

If your form only contains text inputs (not as arrays), you may try this plugin, which I've adapted from its unserialize function counterpart (https://gist.github.com/rcmachado/242617#file-jquery-unserialize-js), but instead of returning an object, it fills the form it applies to.

(function($){
    $.fn.fillformwithserialized = function(serializedString) {
        var str = decodeURI(serializedString);
        var pairs = str.split('&');
        var p, idx, val;
        for (var i=0, n=pairs.length; i < n; i++) {
            p = pairs[i].split('=');
            idx = p[0];

            var txtBox = this.find('#' + idx + ':input');
            if (txtBox.is(":text")) {
                txtBox.val(p[1]);
            }
        }

        return this;
    };
})(jQuery);

Example of use:

var dataSerialised = sessionStorage.getItem('frmVeryImportantStuff');

if (dataSerialised == null || !confirm("We could restore the previous version of the form you posted. Shall we?"))
return false;
else {
    $("#frmVeryImportantStuff").fillformwithserialized(dataSerialised);
}

Obviously you'll need to have saved your form in the sessionStorage in the first place.
Example:

sessionStorage.setItem("frmVeryImportantStuff", $(frmVeryImportantStuff).serialize());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文