jQueryを選択して送信

私は非常に単純な入力と、出発日のui-datepickerを使ってホテルの予約オプション(日付、夜の数、子供の数など)を集めています。

私はこのデータを収集し、隠された(醜い第三者の)形式でオプションの対応する '選択された'属性を設定するためにjQueryを使用しています。これはすべてうまくいきました。DOM要素が変更されていることがわかります。つまり、非表示のフォームの 'selected'オプションが変更されています。

最後に、フォームがjQueryを介して再度送信されます。

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

問題:DOMでOKオプションが選択されていても、フォーム提出によって値が認識されません。

コード:

$(".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 で既にオンラインです(恥ずかしいこと、私は知っています)予約する '...

0
何がうまくいきませんか?フォーム送信によって認識されない値は何ですか?より正確な詳細をお知らせください。
追加された 著者 Shadow Wizard,
@スコット - 私は今答えとして私のコメントを投稿しました。
追加された 著者 Shadow Wizard,
@Shadow Wizard - フォームは、提出時に、フォームの 'action'属性でspec'edされたファイルを明示的に呼び出しています。結果のクエリ文字列には、DOMで「選択済み」とマークされたオプションの値はありません。デフォルトでは、それぞれのオプションがデフォルトになっています。したがって、フォームの提出は、DOMのjquery操作によって '選択されたそれらの値をピックアップしていません...
追加された 著者 Scott Clark,
Ha - あなたは私にそれを打つ - Shadow Wizardに感謝!私は自分のQに答えることが許されていないことを発見するためだけに答えを入力していました - 100人未満の担当者。私はこれを投稿していました:OK - それはソートされました...問題はこれでした:$( "#fromday option")eq(day).attr( "selected"、 "selected");これは実際にHTML選択オプションの「選択された」属性を操作しましたが、フォーム送信によって変更された値として選択されませんでした。代わりに、これはうまくいった... $( "#fromday")。val(day);男、やったことがうれしいよ! N outを超えて... S
追加された 著者 Scott Clark,
@ ShadowWizard - 絶対に - コードは奇妙です!フォームはサードパーティの予約エンジンの人々によって提供され、それは醜いです!その理由から私はインターフェースを作り直す必要がありました。残念なことに、フォーム提出時に実際にライブラリにjavascript関数が呼び出され、実際にサブミットされるので、残念ながらコードに結びつけなければなりませんでした。コードに惑わされないように、私は「オフスクリーン」フォームを使用し、値を操作し、jqueryを介して「クリック」することを決定しました。
追加された 著者 Scott Clark,

2 答え

そのようなコードで適切に値を選択してみてください:

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

For this to work, have each with proper value, e.g. for day 2:


また、「選択された」属性を削除しないでください。

0
追加された
乾杯、決して遅くないより良い。 :)
追加された 著者 Shadow Wizard,
ありがとうございます - 私は古い投稿を確認していましたが、元の 'コメント'の回答を後半の「受け入れ」のために残念なものとして追加したことがわかりました。 Cheers、SC
追加された 著者 Scott Clark,

あなたのフォームに登録された submit イベントハンドラがありますか?以下のようなものが存在する可能性があります。

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

そうでなければ、(AFAIK)jQueryの submit()関数を直接起動できません。フォームを送信するには、以下を実行する必要があります。

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

また、 rel="nofollow"> gmkvのjQuery APIサイトでの返信も確認してください。

0
追加された
提案してくれてありがとう - 私はそれを試しに行ってから戻ってきます...
追加された 著者 Scott Clark,
OK - 調査後、あなたの提案は、フォームがただ提出しない状況に関するものであるようです。この問題では、フォームは問題は発生しませんが、jqueryで設定されたselected = "selected"属性の