我可以写一些东西,我在问jQuery中是否已经内置了一些东西。
简短回答:否,jQuery中没有内置的东西可以做到这一点。不知道为什么不。。。
但是
这里有一个jQuery插件,如果您使用.serialize()
来获取序列化字符串,它应该可以做到这一点:
$.fn.deserialize = function (serializedString)
{
var $form = $(this);
$form[0].reset(); // (A) optional
serializedString = serializedString.replace(/+/g, '%20'); // (B)
var formFieldArray = serializedString.split("&");
// Loop over all name-value pairs
$.each(formFieldArray, function(i, pair){
var nameValue = pair.split("=");
var name = decodeURIComponent(nameValue[0]); // (C)
var value = decodeURIComponent(nameValue[1]);
// Find one or more fields
var $field = $form.find('[name=' + name + ']');
// Checkboxes and Radio types need to be handled differently
if ($field[0].type == "radio" || $field[0].type == "checkbox")
{
var $fieldWithValue = $field.filter('[value="' + value + '"]');
var isFound = ($fieldWithValue.length > 0);
// Special case if the value is not defined; value will be "on"
if (!isFound && value == "on") {
$field.first().prop("checked", true);
} else {
$fieldWithValue.prop("checked", isFound);
}
} else { // input, textarea
$field.val(value);
}
});
return this;
}
(A) 顶部的重置是可选的。您可能需要先重置字段值,或者使用类似的方法清除字段值:https://stackoverflow.com/a/6786237/1766230
(B) 请参阅https://stackoverflow.com/a/24417399/1766230为什么我们需要更换CCD_ 2。
(C) 有关decodeURIComponent
的信息,请参阅Mozilla开发人员Javascript参考。
(注意:如果您使用.serializeArray()
或其他方式序列化数据,上述方法将不起作用;您可能会发现其中一些解决方案很有用:jQuery插件可以序列化表单并恢复/填充表单?)
镗孔使用示例:
var $form = $('form.myFormClass');
var s = $form.serialize();
$form.deserialize(s);
这里有一个jsfiddle,让您可以处理设置值、清除、重置和"反序列化":http://jsfiddle.net/luken/4VVs3/
没有。
您如何知道要更改哪个DOM元素?可能有相同的元素以不同的形式具有相同的名称等等。
也许parseJSON会帮助你:
jQuery.parseJSON(json)返回:Object
描述:获取一个格式良好的JSON字符串,并返回生成的JavaScript对象。
这里是:
a=$('.price_analysis input').serializeArray();
aa={};
for (var i in a) {
aa[a[i].name] = a[i].value;
}
alert( JSON.stringify(aa));