2012-02-06 7 views
0

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

私は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で類似の問題を検索しましたが、私は同じ状況を本当に見つけることはできません。 mはjquery経由で操作されています。

それはhttp://www.hotelginorialduomo.comで(私が知っている、恥ずかしい!)すでに、すべてのオンラインだ - ちょうど「予約します」をクリックします...

+2

正確には機能しません。フォーム送信によって認識されない値は何ですか?より正確な詳細をお知らせください。 –

+0

@Shadow Wizard - 提出時に、フォームの 'action'属性内のspec'edファイルを明示的に呼び出しています。結果のクエリ文字列には、DOMで「選択済み」とマークされたオプションの値はありません。デフォルトでは、それぞれのオプションがデフォルトになっています。したがって、フォームの提出はDOMのjquery操作によって '選択されたそれらの値をピックアップしていません... –

+0

ハ - あなたはそれに私を打つ - シャドウウィザードに感謝!私は自分のQに答えることが許されていないことを発見するためだけに答えを入力していました - 100人未満の担当者。私はこれを投稿していた:OK - それはソートされて... 問題は次のとおりです。 $( "#fromdayオプション")eq(日).attr( "selected"、 "selected"); これは実際に、HTML選択オプションの「選択された」属性を操作しましたが、フォーム送信によって変更された値として選択されませんでした。代わりに、これは機能しました... $( "#fromday")。val(day); 男、できてうれしいです! オーバーナウ... S –

答えて

0

そのようなコードを適切に値を選択しよう。このため

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

仕事に、適切な値と各<option>を有する、例えば2日目:

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

また、「選択された」属性を削除しないでください。これに隠された意味がない限り、「選択済み」属性は削除しないでください。

+0

ありがとうございます - 私は古い投稿を確認していましたが、元の 'コメント'の回答を後半の「受け入れ」のために残念なものとして追加したことがわかりました。乾杯、SC –

+0

乾杯、決して遅くないより良い。 :) –

0

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

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

ない場合は、(私の知る限りでは)直接jQueryのsubmit()機能を起動することはできません。

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

また、gmkv's reply on the jQuery API siteを必ず確認してください:あなたは、フォームを送信するために、以下やってきました。

+0

提案していただきありがとうございます - 私はそれを試しに戻ってから投稿してください... –

+0

調査の結果、あなたの提案はフォームが送信されない状況に関するものです。この問題では、フォームは問題は発生しませんが、