27

私はこのHTMLを持っています:

<form id='myform'>
<input name='title' value='foo'/>
</form>

そして、次のようにオブジェクト配列を作成します。

var dataArray = $("#myform").serializeArray();

dataArray の「タイトル」にアクセスするにはどうすればよいですか? これは動作しません:

alert(dataArray['title']);
alert(dataArray['title'].val());
4

8 に答える 8

43

ニックが投稿したものに似ていますが、少しきれいです

var dataArray = $("#myform").serializeArray(),
    dataObj = {};

$(dataArray).each(function(i, field){
  dataObj[field.name] = field.value;
});

その後、同じようにアクセスします

alert(dataObj['title']);
于 2012-04-06T22:40:59.957 に答える
30

@Tomのようにループスルーするか、複数にアクセスしている場合は、もう少し効率的にループして、次のようなオブジェクトを作成します。

var dataArray = $("#myform").serializeArray(),
    len = dataArray.length,
    dataObj = {};

for (i=0; i<len; i++) {
  dataObj[dataArray[i].name] = dataArray[i].value;
}

次に、必要に応じてアクセスできます。たとえば、次のようになります。

alert(dataObj['title']); //or alert(dataObj.title);

ここでテストできます

于 2010-11-21T10:03:12.577 に答える
14
alert(dataArray[0].name);
alert(dataArray[0].value);

そう:

for (i=0; i<dataArray.length; i += 1) {
    if (dataArray[i].name === "title") {
        // do something here...
    }
}
于 2010-11-21T06:53:07.513 に答える
4

とにかくこれを追加して、将来他の人を助ける。すべての値をすばやく検査する良い方法です。

var formdata = $( "#myform" ).serializeArray();
var formdata = JSON.stringify(formdata);
alert (formdata);
于 2015-09-08T12:24:15.750 に答える
3

を実行console.log(dataArray);し、プロパティ インスペクターを開き、コンソールを確認します。Chrome では、右クリックして [Inspect Element] を選択し、左下にある ">=" のようなアイコンをクリックします。これは左から 2 番目です。

Firefox に firebug をインストールすると、「コンソール」というタブが表示されます。

IE で利用できるかどうかはわかりませんが、おそらく開発者ツール (プレスf12) の何かですが、IE での開発はお勧めしません。

とにかく、これにより、各アイテムの値をナビゲートして表示できるようにオブジェクトがリストされます。そうすれば、これを使用して値にアクセスする方法を解読できます:)

幸運を

于 2010-11-21T06:57:55.223 に答える
2

myDiv の入力の serializeArray を警告します (注::inputセレクターには、select タグと textarea タグも含まれます!):

//alert(fData.length) // how many inputs got picked up 
var fData=$("#myDiv :input").serializeArray();
var msg=""; 
for(var i=0;i<fData.length;i++){
    var raKy=Object.keys(fData[i]); 
    msg+="\n"+raKy[0]+":"+eval("fData[i]."+raKy[0])+" "+raKy[1]+":"+eval("fData[i]."+raKy[1]); 
}
alert(msg);
于 2014-09-03T17:13:43.310 に答える
0

ではuderscore.js、これを行う方法は次のとおりです。

var serializedArray = $('form#spiderman-application').serializeArray();

var serializedObject = _.object(
  _.pluck(serializedArray, 'name'), 
  _.pluck(serializedArray, 'value')
)

console.log(serializedObject);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>

<form id="spiderman-application">
  <legend>Application Form</legend>
  <input name="./fname" value="Peter" />
  <input name="./lname" value="Parker" />
</form>

幸運を...

于 2018-08-24T11:36:29.190 に答える