jquery datepicker не отправляет данные об использовании .serialize () для заполнения сетки - PullRequest
0 голосов
/ 10 сентября 2010

У меня есть форма с 2 типами ввода = "текст", 1 полем со списком и другим содержимым (поле со списком содержит равные, после, до и между операторами + дата начала (указатель даты jquery) + дата окончания (средство выбора даты jquery), нокогда я отправляю данные на сервер, их параметры даты не добавляются с помощью 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 Ответ

6 голосов
/ 10 сентября 2010

Проблема очень проста.Если вы хотите, чтобы поля ввода с идентификаторами "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, поэтому они сериализуются.

...