2012-02-27 43 views
1

私は以下のような基本的なhtmlとjavascript関数を持っています。私はフォームIDでフォームをシリアル化すると動作します。しかし、私は$('.FormReference').serialize()のような形式ではないHTMLコンテンツをシリアライズしたいと思います。Jquery serialize()メソッドが機能しません

どうすればいいですか? the documentationから

$(function() { 

     $('#btnLogin').click(function (event) { 

      alert($('#form1').serialize()); 
     }); 

    }); 


<form id="form1" runat="server" action=""> 
    <div> 
     <table class="FormReference"> 
      <tr> 
       <td> 
        <input type="text" id="_Username" name="Username" /> 
       </td> 
       <td> 
        <input type="text" id="_Password" name="Password" /> 
       </td> 
      </tr> 
      <tr> 
       <td colspan="2"> 
        <input type="button" id="btnLogin" value="Login" /> 
       </td> 
      </tr> 
     </table> 
    </div> 
    </form> 
+0

をシリアライズ/)は、フォーム(またはフォーム要素のコレクション)でのみ動作します。 '$( '。FormReference')'は表であり、フォーム(またはフォーム要素)ではありません。 –

答えて

6

.serialize()方法は、<input><textarea>、及び<select>などの個々のフォーム要素を、選択されたjQueryオブジェクトに作用することができます。しかし、一般的にシリアル化<form>タグ自体を選択する方が簡単です:

だから、あなたは2つのオプションがあります。[ `.serialize`](http://api.jquery.com/

$('.FormReference').closest('form').serialize(); // serialize the whole form 
$('.FormReference').find('input, select, textarea, button').serialize(); // serialize only elements contained within .FormReference 
$('.FormReference').find(':input').serialize(); // shorter, but less efficient, alternative 
+3

'$( '。FormReference')。find( ':input')' :-P –

+1

@Rocket追加されましたが、ブラウザに 'qSA'があれば遅くなります... – lonesomeday

関連する問題