我有一个表单通过Ajax向数据库提交值并且运行正常但我还需要为用户提供选项,以便在出错时将表单重置为默认值。
默认值存储在javascript变量中作为json对象
{"field_name1":"2","field_name3":"3","field_name3":"1000"...
我遇到的问题是表单有多种输入类型,textarea,select,radio 我需要根据对象键找出它们是什么,查找名称和返回类型,这样我就可以做一些事情,如果检查了收音机,等等
我试过
Object.each(dafaultValues, function(value, key){
var filed_name = MyForm.elements[''+key+''];
console.log(filed_name.type);
});
问题在于,无线电类型具有相同的名称,但ID不同
<input type="radio" name="field_name5" id="field_name51" value="1">
<input type="radio" name="field_name5" id="field_name52" value="1" checked="checked">
我最终得到了js错误
未捕获的TypeError:无法读取未定义的属性“type”
那么在我能做之前找出输入类型是什么的最佳方法
if(field.type ='radio'){
//set checked checked..
}
答案 0 :(得分:1)
看看这个例子。我只是把它放在一起非常脏,但你会得到这个想法;)
HTML:
<form id="test">
<input type="radio" name="abc" value="1"/>
<input type="radio" name="abc" value="2"/>
<input type="radio" name="abc" value="3"/>
<input type="text" name="def" value="change" />
</form>
JS:
var values = {
'abc': '2',
'def': 'original'
};
var els = $('test').getElements('[name="abc"], input');
els.each(function(el) {
var defaultVal = values[el.get('name')],
type = el.get('type');
if (typeof defaultVal != 'undefined') {
return;
}
if (type == "radio") {
if (el.get('value') == defaultVal) {
el.set('checked', 'checked');
} else {
el.erase('checked');
}
}
if (type == "text") {
el.set('value', defaultVal);
}
});