2011-05-02 8 views
0

jQuery Accordion UIをマルチパートフォーム(検証およびフォームプラグインあり)で使用しています。各フォームには、通常の送信ボタンと編集ボタンがあります。編集ボタンは、現在開いているセクションが完了している場合はそれをトリガーし、完了していない場合はアクティブセクションを閉じます。エディットボタンがクリックされたセクションにアコーディオンが開きます。アコーディオンでボタンがクリックされたインデックスを特定する方法

たとえば、ユーザーはセクション1を入力し、次にクリックします。セクション2を埋めている間、ユーザーは間違いを犯してセクション1内の編集ボタンをクリックすることを認識します。セクション2は閉じられ、セクション1は編集のために再度開きます。私はどのインデックスがセクション2を閉じるためにトリガーした編集ボタンを含んでいたのかを知りたいと思います(この例では最初のセクションに関連付けられたインデックスでした)。

編集ボタンがクリックされたセクション(インデックス)を特定する方法がわかりません。 submitHandler内で次のコードを使用すると、正しいインデックスが取得できません。

var acc = $("#accordion"), 
index = acc.accordion('option','active'), 
index_origin = $(".edit").index(this); 
alert(index_origin); 

私は不器用なコードについて事前に謝罪しています - 私はこれを初めて知りました。

更新:以下は、コメントで要求されているとおり、ここではアコーデオンの最初のセクションのHTMLです。

<h3 id="section1"><a href="#" class="">Applicant Information</a><button id="edit-applicant-button" class="edit" value="edit" name="edit">Edit Applicant information</button></h3> 
     <div id="applicant-information" class="step"> 
       <form id="applicant-form" class="registration-form" name="applicant-form" method="post" action=""> 
        <fieldset id="clientInfo">     
. . . 
         </div> 
         <div class="step-action"> 
          <p> 
           <span class="next-step"> 
            <button id="submit-first" class="submit" type="submit" value="next" name="next"><em>Next</em></button> 
           </span> 
          </p> 
         </div>< 
        </fieldset>   
       </form> 
     </div> 
+0

HTMLマークアップを少し投稿できますか? –

+0

もう少し説明してください: "編集ボタンは、編集ボタンがクリックされた他のセクションを開く前に公開セクションを送信します" –

+0

私は明確にするために投稿を編集しました。今はっきりしていることを願っています。 – Ken

答えて

1

をお探し。だから、HTMLでそれを変更する必要がある、またはこれにあなたのjavascriptを変更したい:

index_origin = $("#accordion .edit").index(this); 

セレクタに#accordionの追加は必須ではありませんが、1つまたは多くのアコーディオンを持ってできるようになります。

EDIT。あなたが指定した追加情報を使用すると、解決方法は次のようになります。

$("#accordion .edit").click(function(){ 
    window.lastButtonClicked = this; //Store clicked button in a global var. 
}); 

... 
submitHandler: function(){ 
    var index_origin = $("#accordion .edit").index(window.lastButtonClicked); 
} 
+0

ありがとうございます。残念ながら、submitHandler内からは、まだ編集ボタンがクリックされた場所からインデックスを取得できません。さらに混乱を避けるために投稿を編集しました。 – Ken

+0

できました。私は新しい解決策で私の答えを編集しました –

+0

ありがとう、それはトリックを行うようです。インデックスが想定されているよりも1つ小さい理由はありますか(たとえば、最初のインデックスは-1で0ではなく)。 – Ken

0

アコードの選択されたセクションは、アクティブなクラスを与えます。エラーは、ボタンの実際のクラスが"edit"、ない"editButton"であるということであるアクティブなクラスを持っているhタグ

$('#acordion h').hasclass('active').index() 
関連する問題