2012-03-06 8 views
0

私のボタン(私は< %%タグ内のasp.netで多くを生成します)が "textboxHidden" divを表示してから、 「応答」と「閉じる」の間のボタンの値。もう一度「閉じる」ボタンをクリックすると、再びdivを非表示にしたい場合...jquery .showと.toggleをワンクリックで数回開きます。

実際にボタンをクリックするとdivを数回非表示にしてから「閉じる"ボタン" のdivザッツ 理由です

:。?

<div id="buttons"> 
         <span class="reply"></span><span class="reply"> 
          <input type="button" id="replyButton<%=i %>" value="Respond" onclick="showTextArea('<%=i %>')" /> 
         </span> 
        </div> 
        <div id="textboxHidden<%=i %>" style="display: none;"> 
         <textarea style="width: 500px; height: 70px;" name="forum_topic_comment<%=i %>" id="forum_topic_comment<%=i %>"></textarea> 
         <div id="hiddenSave<%=i %>" style="display: none;"> 
          <input type="button" value="Save" onclick="submitComment('<%=i %>');" /> 
         </div> 
        </div> 

はjqueryのコードのthats:!ヘルパーのための

function showTextArea(i) { 
       $("#replyButton" + i).click(function() { 
        $("#textboxHidden" + i).toggle(200); 
        $("#hiddenSave" + i).show(200); 
        $("#replyButton"+i).val('Close').toggle(); 

       }); 
      } 

感謝を

答えて

1

をごshowTextArea()必要がありますこれだけを含む:

$("#textboxHidden" + i).toggle(200); 
$("#hiddenSave" + i).show(200); 
($("#replyButton"+i).val() != 'Close' ? $("#replyButton"+i).val('Close') : $("#replyButton"+i).val('Respond')) 

参照:http://jsfiddle.net/hdfku/2/

+0

ありがとう!できます!。しかし、私はもう一度隠されたときに、 "近く"を再び "反応する"ようにすることはできますか? – thormayer

+1

@thormayer:上記のコードは更新されています。 – codef0rmer

1

もちろん、あなたがしていることを見てください。各ボタンにonclick属性を割り当てています。クリックするたびに、showTextAreaという関数が呼び出されます。このボタンでは、ボタンをクリックするたびに新しい(!)クリックハンドラを追加します。これらのクリックハンドラはすべて、次のボタンクリックで実行されます。クリックごとにクリックハンドラが増えます。

1

入力にonclickのを削除し、クラスを追加 "showTextAreaを":

<input class="showTextArea" type="button" id="replyButton<%=i %>" value="Respond" /> 

をということで、あなたのJSを置き換える:

$(".showTextArea").click(function() { 
    i = $(this).attr('id').replace("replyButton","") 
    $("#textboxHidden" + i).toggle(200); 
    $("#hiddenSave" + i).show(200); 
    $("#replyButton"+i).val('Close').toggle(); 
}) 

作業罰金を私のため

+0

これを行うと、クリックすると何もしません。 – thormayer