0

動的タブへのフォーム送信に苦労しています。タブから抜け出して、更新ページを表示するだけのようです。

長いリードイン。インデックスページに2つのタブを作成します。検索は内部で行われ、2番目は大きなフォームページを呼び出します。

 <div id="tabs">
   <ul>
     <li><a href="create.cfm"><span>Create</span></a></li>
     <li><a href="#searchtab"><span>Search</span></a></li>
   </ul>
   <div id="searchtab">
     [search page stuff]
   </div>
 </div>

どちらのページもうまく機能します。[作成]タブでは、新しいフォームに入力して送信できます。送信すると、検証してから[作成]タブに「ありがとう」が表示されます。

これは送信コードのスニペットです:

 $(document).ready(function(){                     
   $("#saCreate").validate({
        [validation stuff]
    },
    submitHandler: function(form) {
        if (confirm("Are you sure you want to submit?")) {
    form.submit();
        }

これは希望どおりに機能します。

検索ページには、すべての「開いている」フォームのリストが表示され、フォームを1つ選択すると、新しい動的タブで詳細が開きます。

例えば:

 gridSelect = function(satrk) {
 var checkName = satrk;
 var tabExists = false;
   $('#tabs ul li a').each(function(i) {
   if($(this).text() == checkName) {
    tabExists = true;
}
});

// React to existance:
if(!tabExists){
$("#tabs").tabs("add","details.cfm?satrk="+satrk,satrk);
$("#tabs").tabs("select", satrk); // select tab by index
}else{
$("#tabs").tabs("select", satrk); // select tab by index
}

基本的に、タブが開いている場合はそれを選択するだけですが、そうでない場合は新しいタブを作成し、gridSelectに渡された「id」を名前として使用します。このIDは文字通りdbIDです。

これもうまくいきます。私は今、古いフォームの詳細を含む新しい動的タブを見ています。これは、作成用の同じ古いフォームにすぎませんが、DBからフォームボックスに入力されています。

変更が必要な場合は、変更してから「更新」ボタンを押してください。以前と同じ検証を行い、適切に送信された場合。

これはすべてががらくたに落ちるところです。このフォームは送信せず、私の素敵な動的タブにありがとうを表示しません。このフォームは送信され、古いフォームインターフェイスを上書きする新しいURLでありがとうを表示します。たとえば、blah、blah、blah / update.cfm

私はjQueryにかなり慣れていないので、自分の居場所を見つけるために多くのテスト、検索、試行錯誤を行ってきましたが、基本的な能力に達していないのではないかと心配しています。

更新ページで、更新の確認を使用して動的タブを更新するだけで済みます。

ヘルプ!

4

1 に答える 1

0

標準のPOSTリクエストは、実際にブラウザに新しいページをレンダリングするように指示します。あなたが探しているのはajax送信です。必要に応じて、成功コールバックを使用して、結果に基づいてDOMを操作できます。

$('form').serialize()フォーム変数に関しては、すべてのフォームフィールドを送信用のjsonオブジェクトに変換するために使用できます。詳細については、 http://api.jquery.com/serialize/を参照してください。

于 2012-11-12T18:57:51.563 に答える