私は、ユーザーが入力した値を検索フィールドに渡すことができるフィールドに値を入力できるようにするクエリビルダフォームを持っています。フォーム内のユーザーがすべてのフィールドを完了する必要はありません。 jQueryの内jQueryで値を持つフィールドのみを返す方法
HTMLのサンプル
<div id="advanceSearchCriteria">
<div class="searchHeader">Person</div>
<div class="contentBorders" id="person">
<div class="searchdiv">
<span class="smLabel">Last Name</span><br />
<input type="text" name="lastname" value="" size="15" />
</div>
<div class="searchdiv">
<span class="smLabel">First Name</span><br />
<input type="text" name="namefirst" value="" size="15" />
</div>
<div class="searchdiv">
<span class="smLabel">Middle Name</span><br />
<input type="text" name="namemiddle" value="" size="10" />
</div>
<div class="searchdiv">
<span class="smLabel">Suffix</span><br />
<input type="text" name="suffix1" value="" size="5" />
</div>
</div>
</div>
私は、これがすべての入力フィールドを返し、現在のアプローチでasp.netのテキストボックスコントロールにフィールドの値を渡す
function setAdvancedSearchString() {
checkField();
var txt = $("input[name='tbsearchterm']");
var fields = $("#advanceSearchCriteria :input").serializeArray();
jQuery.each(fields, function (i, field) {
if (txt) {
txt.val(txt.val() + field.name + ": " field.value + " ");
}
});
}
の関数を作成とその値。私が望むのは、ユーザーがシリアライズして検索語に渡すために入力した値を含むフィールドだけです。たとえば、ユーザが姓を入力しただけの場合、そのフィールド名と値が返されます(姓:james)
varフィールドでnullをテストしようとしましたが、構文が間違っているか、
var fields = if($("#advanceSearchCriteria :input") != null)
{
$("#advanceSearchCriteria :input").serializeArray();
}
が、これはコンパイルエラーを引き起こしているようだ:間違った場所に
は、これまでのところ私は、次の試してみました。
値を入力したフィールド名と値をシリアル化して返す方法については、誰でも助けてもらえますか?あなたが:input [value != '']
を使用することができます
$("#advanceSearchCriteria :input").filter(function() {
return $(this).val() != "";
}).serializeArray();
余分なヒントをありがとう。副次的な質問として、jsonオブジェクト配列/ジョインを作成する必要がない場合は、より簡単なアプローチであると仮定することは安全です。これは、jquery serializeArrayよりもわかりやすいようです。 – rlcrews
それはあなた次第です。大規模なデータセットで作業しない場合は、読みやすさが優先されます。 –