2017-02-21 10 views
0

元の送信ボタンをjQuery生成の送信ボタンに置​​き換えた後、このフォームを送信するにはどうすればよいですか?Jquery動的に生成された送信ボタンとフィールド

フォーム:

<form action="url" method="post" accept-charset="utf-8" class="form horizontal" id="reg">   
    <select name ="type" id="owner"> 
      <option...> 
    </select> 
    <div class="controls-actions"> 
     <button type="submit" id="sub">Submit</button> 
    </div> 
</form> 

フォームにフィールドを追加するためにイベントリスナーがあります:

$('#owner').change(function(){ 
    if($('#owner').val() == 1){ 
     $('#owner').after('<input name="added" value="2">'); 
    }  
}) 

、私はデフォルトの送信ボタンを使用する場合、新しいフィールドは掲載されません。グラム

//remove the old submit button and add new one 
$('.control-actions').empty().append('<button id="added">Submit>'); 

最後に、新たにイベントリスナーを追加しますので、私は.submit()を使用してみましたフォームを送信するためにeneratedボタン:

$('#added').on('click', function(){ 
    $('#reg').submit(); 
}) 

何が新しく生成されたボタンがクリックされたときに、何のコンソールエラーが起こりません、no形式の提出。 jQueryのバージョンは1.10です。

+0

を? [XY問題](http://meta.stackexchange.com/q/66377/194720)のように聞こえるので、元の問題を解決するほうがより有益です。 –

+0

@mike:送信ボタンを押したまま、フォームに動的フィールドを追加します。つまり、フォームがクリックされるまで送信されません。動的フィールドにはユーザー入力が含まれている可能性があります。 – Kisaragi

+0

これがあなたの実際のコードならば、 '$( '。control-actions')'はクラスが "controls-actions"なので、何もマッチしません。 –

答えて

1

フォームフィールドを変更して他のフィールドを追加し、送信ボタンを代用すると、委任イベントで新しく作成された送信ボタンを処理できます。

$(document).on('click', '#added', function(e) { 
 
    //$('#reg').submit(); 
 
    console.log('#added clicked'); 
 
}) 
 

 

 
$('#owner').on('change', function(e){ 
 
    if ($('#owner').val() == 1){ 
 
     $('#owner').after('<input name="added" value="2">'); 
 
     $('.controls-actions').empty().append('<button type="button" id="added">Submit: click me to test</button>'); 
 
    } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script> 
 

 

 
<form action="url" method="get" accept-charset="utf-8" class="form horizontal" id="reg"> 
 
    <select name ="type" id="owner"> 
 
     <option value=""></option> 
 
     <option value="1">1</option> 
 
    </select> 
 
    <div class="controls-actions"> 
 
     <button type="submit" id="sub">Submit</button> 
 
    </div> 
 
</form>

+0

質問にタイプミスが更新されます。私はIDを混ぜ合わせました。 – Kisaragi

+0

@Kisaragi Right!委任されたイベントを使用してみてください。回答が更新されました。 – gaetanoM

0

この試してください:あなたは、ボタンを削除し、追加を開始する前に、正確にあなたがしようとしていた何

$('.controls-actions').empty(); 
    $('<button id="added" value="Submit">').appendTo('.controls-actions').bind('click', function() { 
     $('#reg').submit(); 
    }); 
関連する問題