У меня есть форму построителя запросов, которая позволяет пользователю вводить значения в поля, которые после завершения позволяют им передавать введенные значения в поле поиска. Не все поля должны быть заполнены пользователем в форме.Как вернуть только поля, имеющие значение с помощью 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>
В JQuery я создал функцию, чтобы передавать значения полей в элементе управления 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 + " ");
}
});
}
При нынешнем подходе это возвращает все поля ввода и их значения. То, что я хотел бы иметь, это только поля, которые содержат значение, введенное пользователем для сериализации и передачи в поисковый запрос. Например, если пользователь вводил только фамилию, мне хотелось бы только это имя поля и возвращаемое значение (lastname: james)
Я попытался проверить значение null на полях var, но мой синтаксис неверен или я тестирую значение null в неправильном месте
до сих пор я попытался следующие:
var fields = if($("#advanceSearchCriteria :input") != null)
{
$("#advanceSearchCriteria :input").serializeArray();
}
, но это, кажется, вызывает ошибку компиляции.
Может ли кто-нибудь помочь в том, как только сериализовать и вернуть имена полей и значения, которые имеют введенное значение?
Спасибо,
Спасибо за дополнительные советы. В качестве побочного вопроса можно с уверенностью предположить, что если мне не нужно создавать объект json object array/join, это более простой подход. Это кажется более читаемым для меня по jquery serializeArray. – rlcrews
Это зависит от вас. Если вы не работаете с большими наборами данных, читабельность может быть вашим приоритетом. –