JQuery выбрать и отправить - PullRequest
0 голосов
/ 06 февраля 2012

Я собираю варианты бронирования отелей (дата, количество ночей, количество детей и т. Д.) С помощью очень простого набора данных, а также выбора даты для даты отъезда.

Я использую jQuery для сбора этих данных и затем устанавливаю соответствующие «выбранные» атрибуты опций в скрытой (уродливой сторонней) форме.Все это происходит нормально, и я вижу, что элементы DOM меняются - т.е. изменяются «выбранные» параметры в скрытой форме.

Наконец, форма отправляется снова через jQuery:

$("form[name=idForm]").submit();

ПРОБЛЕМА: значения не распознаются формой, отправьте, даже если «параметры» выбраны «нормально» вDOM.

Код:

$(".check").click(function(){
    $(".book_result").hide(); /* just to hide verification feedback*/
    var date     = $("#datepicker").val();
    var nights     = $("#book_nights").val();
    var adults    = $("#book_adults").val();
    var children        = $("#book_children").val();
    var access_code     = $("#book_access_code").val();
    if (date=='no date selected'){
        //all the code for verifying the users' input...
        return;
    }
    else {
        var newDate = date.split(' - ');
        var day         = parseInt(newDate[0]-1);
        var month         = parseInt(newDate[1]-1);
        var year         = parseInt(newDate[2]);

        var nights         = nights - 1;
        var adults         = adults - 1 ;
        var children    = children - 1;

        if (nights < 0){nights=0};
        if (adults < 0){adults=0};
        if (children < 0){children=0};

        $("#fromday option").eq(day).attr("selected", "selected");
        $("#frommonth option").eq(month).attr("selected", "selected");
        $("#fromyear option").eq(year).attr("selected", "selected");
        $("#nbdays option").eq(nights).attr("selected", "selected");
        $("#adulteresa option").eq(adults).attr("selected", "selected");
        $("#enfantresa option").eq(children).attr("selected", "selected");

        $("#fromday option").eq(day).siblings().removeAttr("selected");
        $("#frommonth option").eq(month).siblings().removeAttr("selected");
        $("#fromyear option").eq(year).siblings().removeAttr("selected");
        $("#nbdays option").eq(nights).siblings().removeAttr("selected");
        $("#adulteresa option").eq(adults).siblings().removeAttr("selected");
        $("#enfantresa option").eq(children).siblings().removeAttr("selected");

        $("#AccessCode").val(access_code);

        $("form[name=idForm]").submit();
    }

Итак, все очень просто - за исключением того, что это не работает, и я потерял почти 2 дня: (

Этокак будто страница не распознает, что выборки скрытой сторонней формы были изменены - я думал, что отправка формы будет считывать теги в DOM, нет?

Любая помощь будет отличной - я 'Я искал похожие проблемы на SO и через Google, но на самом деле я не нахожу ту же ситуацию, когда формой манипулируют с помощью jquery, а затем отправляют.http://www.hotelginorialduomo.com - просто нажмите «сделать заказ» ...

Ответы [ 2 ]

0 голосов
/ 06 февраля 2012

Попробуйте правильно выбрать значение с помощью следующего кода:

$("#fromday").val(day);

Чтобы это работало, каждый <option> должен иметь правильное значение, например, для дня 2:

<option value="2">2</option>

Кроме того, не удаляйте атрибут «selected» - если у вас нет скрытого значения.

0 голосов
/ 06 февраля 2012

У вас есть обработчик событий submit, зарегистрированный в вашей форме?Может существовать что-то похожее на приведенное ниже:

$("form[name=idForm]").submit(function() {
    // do things like validation
});

Если нет, вы не можете (AFAIK) напрямую запускать функцию jQuery submit().Чтобы отправить форму, выполните следующие действия:

$("form[name=idForm]")[0].submit();

Также обязательно проверьте ответ gmkv на сайте API jQuery .

...