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

时间:2012-10-21 22:55:08

标签: javascript forms 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错误

未捕获的TypeError:无法读取未定义的属性“type”

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

if(field.type ='radio'){

//set checked checked..
}

1 个答案:

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