0

我有一个通过 Ajax 向数据库提交值并且工作正常的表单,但我还需要为用户提供选项以将表单重置为其默认值,以防他们出错。

默认值作为 json 对象存储在 javascript 变量中

{"field_name1":"2","field_name3":"3","field_name3":"1000"...

我遇到的问题是表单有多种输入类型,textarea,select,radio,我需要根据对象键找出它们是什么,查找名称和返回类型,所以我可以做一些事情,比如如果radio set check check等等

我试过

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错误

未捕获的类型错误:无法读取未定义的属性“类型”

那么在我做之前找出输入类型的最佳方法是什么

if(field.type ='radio'){

//set checked checked..
}
4

1 回答 1

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);
   }
});
于 2012-10-22T03:42:57.970 回答