3

次の2つの変数があります。データ変数をサーバーに送信し、戻ったときにさまざまな元の値にアクセスしたいと思います。

データまたはraw変数のいずれかに何らかのeq(1).val()アプローチを実行できますが、それらに正しい順序でアクセスしていることを確認する必要があります。これにより、将来のメンテナンスの問題が発生する可能性があります。または、名前セレクターを使用して元のDOMから値を取得できますが、作業を2回行っているようです。または、元のフォームに名前だけでなくIDも追加できますが、それは無駄のようです。

理想的には、フォームの名前/値をある種のオブジェクトに変換できますが、serializeArrayとは異なり、配列は作成されませんが、値は名前に関連付けられます。たとえば、フォーム<input name="foo" value="bar">にが含まれている場合、newObject.fooとして値にアクセスできます。

これを行うための最良の方法に関する提案はありますか?

var raw=$("#form_id").find('input,select');
var data=raw.serializeArray();
4

5 に答える 5

1
var formVals = [];
$('select, input').each(function(i, v){
   formVals[$(this).attr('name')] = $(this).val();
})
于 2012-05-27T16:02:12.910 に答える
1

これを行うには、フォームに直接アクセスします。

var form = $("#form_id")[0];
console.log( form.foo.value );
于 2012-05-27T16:08:25.997 に答える
0

jQueryでは、serializeArray()を使用してその配列を構築するために、すべての入力(select、radio、checkboxでさえ、実際には一度に入力されない)を選択できると思います。

var object = $(":input").serializeArray();

ここのjQueryドキュメントから:http ://api.jquery.com/serializeArray/もちろん、特にドキュメントに複数のフォームを指定した場合は、その$( ":inputs")をtragettedフォームに制限します。

これにより、次のようなオブジェクトが表示されます。

[{名前: "foo"、値: "bar"}、{...}]

お役に立てれば。

于 2012-05-27T15:55:51.320 に答える
0

あなたの質問を正しく理解している場合は、入力フィールドとフォームフィールドをシリアル化します。

var result = $('form').serializeArray();

次に、個々のオブジェクトを取得します。

result.ObjectName;
于 2012-05-27T15:59:56.267 に答える
0
var raw=$("#form_id").find('input,select');

これはより効率的です。これは、ここのJsperfパフォーマンステストで証明されています 。これは、上記の方法がほとんどすべてのブラウザで他のテストケースよりも優れていることを示しています。直接getメソッドの方がvar item = $(".buttonRef");優れている場合もありますが。注:ほとんどの場合、推奨されていませんが、IDはクラスよりも速くアクセスできます。フォームの入力値にアクセスするときの時間の効率に関しては、uはidを考慮するかもしれません。

注参照

あなたの質問が正しかったかどうかはわかりません。

于 2012-05-27T16:15:22.610 に答える