0

Ajax を介してデータベースに値を送信するフォームがあり、正常に動作しますが、ユーザーが間違いを犯した場合に備えて、フォームをデフォルト値にリセットするオプションをユーザーに提供する必要もあります。

デフォルト値は、json オブジェクトとして javascript 変数に格納されます。

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

私が抱えている問題は、フォームに複数の入力タイプ、テキストエリア、選択、ラジオがあり、それらがオブジェクトキーに基づいて何であるかを把握し、名前を探し、タイプを返す必要があることです。等々

私は試した

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..
}
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 に答える