2009-06-11 8 views
1

1つのページに複数の類似フォームに関する質問があります。 2つ以上の投票があるページがあるとします。 HTMLのフォームは非常に単純です。以前は、インラインのjavascriptで構築されたソルーションでした。もちろん、それは最も良い解決策ではありません。それが構築された方法は、eacht投票フォームが独自のjs関数を持っていたということです。 これはもう私が欲しいワットではありません。ページ上の複数のフォームのjqueryにJavaScriptを書き換える

どのようにフォームを提出したか分かるようにスクリプトを書き直すことはできますか?ここで

は、現在の形である:

<div style="display:block;"> 
    <form name="pollvoteform3" method="post" xaction=""> 
     <input type="hidden" name="poll" value="3"> 
     <input type="hidden" name="cmd" value=""> 
     <div class="poll"> 
      <div class="pollOption"> 
       <div class="pollRadio"><input type="radio" name="poll_option3" value="1"></div> 
       <div class="pollOptionText">Option 1</div> 
      </div> 
      <div class="pollOption"> 
       <div class="pollRadio"><input type="radio" name="poll_option3" value="2"></div> 
       <div class="pollOptionText">Option 2</div> 
      </div> 
      <p> <input type="button" name="bt_submit" class="pollButtonNormal" onmouseover="this.className='pollButtonHigh';" onmouseout="this.className='pollButtonNormal';" value="Stem" onclick="javascript:vote3();"> 
      <input type="button" name="bt_submit" class="pollButtonNormal" onmouseover="this.className='pollButtonHigh';" onmouseout="this.className='pollButtonNormal';" value="Resultaten" onclick="javascript:viewResults3();"></p> 
     </div> 
    </form> 
</div> 
<div style="display:none;"> 
    <form><input type="button" name="bt_submit" class="pollButtonNormal" onmouseover="this.className='pollButtonHigh';" onmouseout="this.className='pollButtonNormal';" value="Resultaten" onclick="javascript:viewResults3();"></form> 
</div> 

編集:jqueryのに

function vote1() { 
    r=document.forms.pollfvoteform3.poll_option3 
    var voted=false; 
    if (r.value!=null && r.checked) 
    { 
     voted=true; 
    } else { 
     for (i=0;i<r.length;i++){ 
      if (r[i].checked) { 
       voted=true; 
       break; 
      } 
     } 
    } 
    if (voted) { 
     document.forms.pollvoteform3.submit(); 
    } else { 
     alert("Youre wrong!."); 
    } 
} 

どのように私はこれを書き換えることができます。

答えて

1

あなたのフォームにIDと共通クラスを提供する必要があります:あなたはラッピングを見ることができるように

$(".myforms").submit(function() { 
    formId = $(this)[0].id; 
}); 

:次に、あなたが一度に両方のフォームのイベントハンドラを割り当てることができます

<form name="form1" class="myforms" id="form1"> 

をこれをjQueryラップされたセットに入れると、特定のフォームのIDを簡単に取得できます。

+0

この行の[0]の意味は次のとおりです。formId = $(this)[0] .id; – sanders

+0

これはDOM要素です。 $(this)はjQueryラップされたセットです。 $(this).get(0)、または$(this)[0]はDOM要素を返します。もちろんthis.idを使用することもできますが、$(this)を使用すると、$(this).attr( "name")などの便利なjQuery関数を使用して属性を読み取ることができます。 – kgiannakakis

+0

あなたはIDが '0'のフォームを取得したいと思っていますか? – sanders

関連する問題