jquery datepicker не отправляет данные об использовании.serialize() для заполнения сетки
У меня есть форма с 2 input type="text", 1 combo box и другим содержит ( combo box содержит равные, после, до и между операторами + дата начала (jquery datepicker)+ дата окончания (jquery date picker), но когда я отправка данных на сервер с параметрами даты, которые не были добавлены, с помощью URL с помощью.serialize().
Мой подход:
$("form#transactionForm").submit(function() {
var newUrl = "/cpsb/transactionHistory.do?method=getTransactionHistoryDetails&" +
$(this).serialize();
$("#transactionHistory").jqGrid(
"setGridParam",
{"url": newUrl, datatype:"json"}).trigger("reloadGrid");
return false;
});
разметить:
<form class="transform" id="transactionForm" method="post" action="">
<fieldset class="ui-widget ui-widget-content ui-corner-all">
<legend class="ui-widget ui-widget-header ui-corner-all">Transaction History</legend>
<p>
<label for="lpn">LPN</label>
<input id="lpn" name="lpn"/>
</p>
<p>
<label for="sku">SKU</label>
<input id="sku" name="sku" class="skui ui-widget-content" />
</p>
<p>
<label for="ttype">Transaction Type:</label>
<select id="ttype" name="tranType" >
<option value="">Select transaction type</option>
<option value="100">100-Receipt</option>
<option value="110">110-Shipment</option>
<option value="120">120-Pallet Update</option>
</select>
</p>
<p>
<label for="tdate">Transaction date:</label>
<select id="tdate" name="date">
<option value="equalsDate">Equal</option>
<option>Between</option>
<option value="beforeDate">Before</option>
<option value="afterDate">After</option>
</select>
<input id="sdate" type="text" style="width:70px"/>
<input id="edate" type="text" style="width:70px"/>
</p>
<p>
<button class="submit" type="submit">Search</button>
</p>
</fieldset>
</form>
1 ответ
Решение
Проблема очень проста. Если вы хотите, чтобы поля ввода с идентификаторами "sdate"
а также "edate"
имеющий datepicker
будет сериализован под именами startDate
а также endDate
Вы должны изменить свой HTML-код из
<input id="sdate" type="text" style="width:70px"/>
<input id="edate" type="text" style="width:70px"/>
в
<input id="sdate" name="startDate" type="text" style="width:70px"/>
<input id="edate" name="endDate" type="text" style="width:70px"/>
Функция jQuery.serialize()
сериализовать только те элементы, которые имеют name
приписывать. Все твои <select>
иметь name
атрибут, поэтому они сериализуются.