如何根据输入类型的名称查找输入类型 Javascript/Mootools



我有一个表单,该表单通过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 error

结束

undureck typeerror:无法读取未定义的属性'类型'

那么,在我可以做之前,找出输入类型是什么是什么最好的方法

if(field.type ='radio'){
//set checked checked..
}

查看此示例。我只是把它放在一起很脏,但是你会得到这个主意;)

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);
   }
});

最新更新