利用json對象初始化form表單用法:
<script type="text/javascript" src="${home}js/jquery.initForm.js"></script>
<script type="text/javascript">
$(xxx).initForm(val)
</script>
(function($){
$.fn.extend({
initForm:function(options){
var jsonStrValue;
if(Object.prototype.toString.call(options) === "[object String]"){
jsonStrValue = options;
}else{
jsonStrValue = JSON.stringify(options)
}
var defaults = {
jsonValue:jsonStrValue,
isDebug:false
}
var setting = $.extend({}, defaults, options);
var form = this;
jsonValue = setting.jsonValue;
if($.type(setting.jsonValue) === "string"){
jsonValue = $.parseJSON(jsonValue);
}
if(!$.isEmptyObject(jsonValue)){
$.each(jsonValue,function(key,value){
if(jsonValue.length){
addValue(form,this.name,this.value,setting)
}else{
addValue(form,key,value,setting)
}
})
}
return form;
}
});
function addValue(form,key,value,setting){
if(setting.isDebug){
console.log("name:"+key+"; value:"+value);
}
var formField = form.find("[name='"+key+"']");
if($.type(formField[0]) === "undefined"){
if(setting.isDebug){
console.log("can not find name:["+key+"] in form!!!");
}
} else {
var fieldTagName = formField[0].tagName.toLowerCase();
if(fieldTagName == "input"){
if(formField.attr("type") == "radio"){
$("input:radio[name='"+key+"'][value='"+value+"']").attr("checked","checked");
} else {
formField.val(value);
}
} else if(fieldTagName == "select"){
formField.val(""+value);
} else if(fieldTagName == "textarea"){
formField.val(value);
} else {
formField.val(value);
}
}
}
})(jQuery)