jQuery-我可以从序列化的表单字符串填充表单输入吗?
考虑到我在页面上有一些表单,我知道我可以使用jQuery-我可以从序列化的表单字符串填充表单输入吗?,jquery,query-string,form-fields,auto-populating,form-processing,Jquery,Query String,Form Fields,Auto Populating,Form Processing,考虑到我在页面上有一些表单,我知道我可以使用 var query = jQuery('#some-form').serialize(); 还可以使用$'some-input'.val…设置每个输入的值。。。。假设上面相同的表单被重置,但我仍然有查询字符串-有没有一种简单的方法从该字符串填充表单?我意识到我可以解析它并单独设置每个输入/选择,但我正在寻找一个更简单的解决方案。谢谢。应该可以帮助您。您可以将表单序列化为JSON数组,并使用MVVM映射插件自动填充表单 请参见如果您的表单只包含文本输
var query = jQuery('#some-form').serialize();
还可以使用$'some-input'.val…设置每个输入的值。。。。假设上面相同的表单被重置,但我仍然有查询字符串-有没有一种简单的方法从该字符串填充表单?我意识到我可以解析它并单独设置每个输入/选择,但我正在寻找一个更简单的解决方案。谢谢。应该可以帮助您。您可以将表单序列化为JSON数组,并使用MVVM映射插件自动填充表单
请参见如果您的表单只包含文本输入,而不是数组,您可以尝试此插件,我从其非序列化函数对应项中改编了此插件,但它不会返回对象,而是填充其应用的表单
(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);
显然,您首先需要将表单保存在sessionStorage中。
例如:
sessionStorage.setItem("frmVeryImportantStuff", $(frmVeryImportantStuff).serialize());
刚刚尝试过,但它似乎不适用于多个select输入。谢谢我们可以做一些类似jQuery'FormID.valearlySerializedState;的事情吗;。。希望按照serializedState变量?填充所有表单字段?。。
sessionStorage.setItem("frmVeryImportantStuff", $(frmVeryImportantStuff).serialize());