2011-07-09 8 views
2

私のサイトには多くのフォームがあります。私がフォームのIDと選択されたオプションを受け取ることを期待するフォームで送信がトリガされるとき。このコードではJQueryで現在のフォームの値を選択

HTML

<form name="order"> 
    <select id="count"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    </select><br/> 
    <input type="text" name="id" value="6" /> 
    <input href="#" type="submit" value="Submit" /> 
</form> 

はJavaScript

var fancyboxOptions = { 
    ajax : { 
     type: "POST", 
     data: { 
      id: null, 
      count: null 
     } 
    } 
} 

$(document).ready(function() { 

    fancyboxOptions.ajax.data.id = $('input[name="id"]').val(); 
    fancyboxOptions.ajax.data.count = $('#count').val(); 

    $('div#buy input').fancybox(fancyboxOptions); 

    $('#count').change(function() { 
     fancyboxOptions.ajax.data.count = $('#count').val(); 
    }); 

私は最初のフォームからのデータのみを受信 - 送信したとき、私は最初のフォームからではなく、からのデータを受信し、他の形態を誘発しています私が提出したフォームが提出されました。

私のコードをどのように再構築するのですか?フォームがサブミットすると、送信したフォームのデータのみが送信されます。

PSファンシーボックスには注意しないでください。

答えて

1

この

<script> 
$('input[name=id]').parent().change(function(){ 
    fancyboxOptions.ajax.data.id = $(this).find('input[name="id"]').val(); 
    fancyboxOptions.ajax.data.count = $(this).find('#count').val(); 
}); 
</script> 

のようなものにあなたのコードを変更したいことがありますが、これは、IDという名前の入力フィールドが含まれている各フォームの変更ハンドラをインストールし、かつますコールバック関数(parent()フォームにインストールされている)は、DOMをナビゲートしてフォームノードに関連するすべてのサブフィールドを見つけることができる「this」にアクセスできます。

+0

ありがとう、とても助けになりました。 – NiLL

1

ページ上のすべてのフォームをループして、ボタンを1つクリックして値を取得する必要がありますか?それは、あなたの質問ない場合は、多分それはあなたの入力の代わりに、クラスのIDを使用してとは何かを持っている

$('form').each(function(){ 
    var currentForm = $(this); 

    var someValue = currentForm.find('input[name="id"]').val(); 

    // do the rest here 
}); 

:もしそうなら、これを試してみてください。一度だけidを使うことができるので、他のフォームにも<が含まれていれば、select id = "count"> jQueryがその値を読み込むと、最初の値が返されます。このことができます

希望...

関連する問題