2012-05-07 10 views
1

私は.serialize()関数を使用して、HTMLフォームを使用してデータベースを更新するためのkey - > valueペア文字列を作成します。最近私は、データ文字列から入力フィールドの1つを省略したいと思っています。私は.not()関数が機能するはずだと思っていましたが、(私がここで使用している限りでは)..問題の例はフィドルを見てください。 http://jsfiddle.net/9RbZ4/.serialize()で.not()を使用

この例では、a、b、c、dの4つのフィールドがあります。 serialize関数からname = "a"というフィールドを省略したいと思います。私はどうしたらいいですか?要素のname属性を参照したいと考えています。

どうすればよいですか?

ありがとうございます!

答えて

2

これは望ましくないビットを除外しないと予想されるため、少し奇妙に見えます。

しかし、入力ではなくフォーム自体を選択しているため、フィルタリングできません。

$('form *[name]').not('[name="a"]').serialize(); 

はすべきことです。

NB - あなたが関与入力以外の要素を有することができるよう、私は* [名前]を使用して...

+0

クール、これはすべてのフォーム要素をキャッチします:http://jsfiddle.net/9RbZ4/5/ –

2

あなたの呼び出し$( 'form')はすべてのフォーム要素を選択すると、.not( '[name = "a"]')を呼び出すと、name = "a"という属性を持つすべてのフォーム要素を除外します。いずれもこの属性を持っていません。あなたが達成したい何

は、上記のコードは、フォーム要素内のすべての入力要素を選択して、指定された名前の入力をフィルタリングしている

$('form input').not('[name="a"]').serialize(); 

です。

+0

それです!ありがとう。 –

+0

しかし、それはすべてのフォーム要素をキャッチしません:http://jsfiddle.net/9RbZ4/4/ –

1
var the_data = $('form :input[name!="a"]').serialize(); 

DEMO

+0

これはいいですし、 ':input'を取り出した場合は、すべてのフォーム要素を捕捉します:http://jsfiddle.net/9RbZ4/6/ –