2011-09-15 4 views
0

".each"メソッドを使用したjqueryを使用して、値が1つの配列にすべてのフォーム要素を取得する方法を知っています。 私は:input [type:text]要素の値に気付いたら、私はそれらを見ることができますが、この同じ配列の中の任意のチェックボックスの値を警告したい場合、常に "on"と表示します。混合型のjqueryでフォームからすべての要素と値を取得する方法

フォームのコンテンツ要素は、1)1つの配列で+ 2)テキストフィールドの値とチェックボックスのチェック状態もわかりますか?

このフォーム要素の配列を反復処理してデータを検証できるようにしたいが、この混合配列のチェックボックスのチェック状態を判断できない。

あなたは.serializeArray()を見てみました、それはあまりにも混乱 よろしく

答えて

3

ではありません願っていますか?私はこれがあなたが探しているものとまったく同じだと思います。

+1

はい。 $( 'form')。serializeArray()はあなたに悪い尻のJSONオブジェクトを与えます。 –

1

.valueの代わりに.checkedを使用してください。それはあなたに真偽ステータスを与えるでしょう。

リストを反復処理するときに、element.typeをチェックして処理する方法を決定します。ラスティが述べたように、たとえば

if (element.type == "checkbox") { 
    //use element.checked 
} else { 
    //use element.value 
} 
0

あなたは自分のフォームからデータを取得しようとしている場合のために、そして.serializeArray使用。しかし、フォーム検証のためにこれを実行しようとしている場合は、jQuery Validateプラグインを実装する方が良いかもしれません。

1

は、これがどのように行われるかを確認するには、このを見てみましょう:

http://jsfiddle.net/VNPsj/

あなたはすべての入力テキストやチェックボックスの値を見ることができます。私は警告でそれらを持っていますが、あなたはそれらを変数またはあなたが望むものに割り当てることができます。魔法は、jQuery Selector(私が使ったもののリファレンスはhttp://api.jquery.com/multiple-attribute-selector/)はフォームの選択された部分をつかむことができるということです。

チェックボックスの「値」を取得するには、$(this).attr( 'checked')メソッドの値を代わりにチェックすることをお勧めします。この値は反復処理中の現在のチェックボックス要素です。

+1

あなたのサンプルを少し更新しました:http://jsfiddle.net/psobko/YdHXD/3/ – psobko

2

jQueryをスキップしてDOMを使用します。フォーム内のすべてのフォームコントロール(入力、選択、ボタンなど)を含むフォームの便利なelementsプロパティがあります。各要素のtypetagNameプロパティを使用して区別し、チェックボックスとラジオボタンのブールcheckedプロパティを使用して、チェックされているかどうかを確認します。このようなものは、これまでにリリースされたスクリプト可能な主要なブラウザすべてで完璧に動作します。

簡単な例:

var els = form.elements; 
for (var i = 0, len = els.length; i < len; ++i) { 
    if (els[i].tagName == "INPUT") { 
     if (els[i].type == "checkbox" || els[i].type == "radio") { 
      alert("Checked: " + els[i].checked); 
     } else { 
      alert("Value: " + els[i].value); 
     } 
    } 
} 
関連する問題