2011-07-11 7 views

答えて

3

基本的なJavaScriptが...それは、標準のURLエンコードされた文字列をバック与えます。しかし、すばらしいことは、さまざまな種類のフォーム要素すべての値を取得することです。

+0

基本、まだので見落とさ:

 function getFormVals(form) { var values = []; for(var i = 0, len = form.elements.length; i < len; i++) { var input = form.elements[i]; switch (input.type.toLowerCase()) { case "checkbox": values[input.name] = values[input.name] || []; if (input.checked) { values[input.name].push(input.value); } break; case "radio": values[input.name] = values[input.name] || ""; if (input.checked) { values[input.name] = input.value; } break; case "select-multiple": values[input.name] = values[input.name] || []; for (var i = 0, len = input.length; i < len; i++) { if (input[i].selected) { values[input.name].push(input[i].value); } } break; default: values[input.name] = input.value; break; } } return values; } 

使用量がある可能性があります。 –

+0

フォームは名前でアクセスできることにも注意してください: 'document.forms ['formName']。elements '' – RobG

+0

@RobG:確かに可能ですが、この方法は完全に移植性があり、ページおよび/またはフォーム –

1

+0

質問が「Javascriptのみを使用している」と言うと、通常はjQueryの使用をdownvoteしますが、OPがその違いを知っているとは思われません:) –

+0

要件が不明確で、jQueryベースのソリューションが妥当でした:) –

+0

jQueryは尋ねられておらず、シリアライズもされておらず、既に良い解決策があります。しかし、ダウンホートはありません。私はそれを意味するものではありません。 :-) – RobG

0

thisをご覧ください。これらの人は、純粋なJSだけを使用してフォームをシリアライズするものを構築しました。

0

この関数は、すべてのフォーム要素を連想配列として返します。また、選択された複数の入力要素のすべての値を返します。

<form onsubmit="var vals = getFormVals(this); alert(vals['myinput']);" > 
    <input type="checkbox" name="myinput" value="ckbx1" /> 
    <input type="checkbox" name="myinput" value="ckbx2" /> 
    <input type="submit" /> 
</form> 
関連する問題