1. ホーム
  2. javascript

[解決済み] jQueryのform.serializeを使用して、空のフィールドを除外するにはどうすればよいですか?

2022-10-11 18:56:11

質問

私は、いくつかのテキスト入力とドロップダウンを持つ検索フォームを持っており、GET経由で送信します。私は、検索が実行されたときにクエリ文字列から空のフィールドを削除することによって、よりきれいな検索URLを持つようにしたいと思います。

var form = $("form");  
var serializedFormStr = form.serialize();  
// I'd like to remove inputs where value is '' or '.' here
window.location.href = '/search?' + serializedFormStr

jQueryを使用してこれを行うことができる任意のアイデア?

どのように解決するのですか?

私はずっと jQuery ドキュメント を使えば1行でできると思います。 セレクタ :

$("#myForm :input[value!='']").serialize() // does the job!

明らかに #myForm は id "myForm" を持つ要素を取得しますが、最初あまり明らかでなかったのが スペース文字 が #myForm と :input の間に必要なことです。 の末尾にある 演算子だからです。

:入力 は全てのinput, textarea, select, button要素にマッチします。

[値!=''] は、attribute not equal filterです。奇妙な(そして役に立つ)ことは すべての :input 要素タイプはselectやcheckboxなどでもvalue属性を持っていることです。

最後に、値が'.'である入力も削除します(質問で言及されたように)。

$("#myForm :input[value!=''][value!='.']").serialize()

この場合、並置、つまり 属性セレクタを隣り合わせに配置する は AND を意味する。 カンマの使用 はORを意味します。CSSの人には当たり前かもしれませんが、すみません。