私は最近、Java/jbossを使用してTwitterブートストラップをいじくり回し、モーダルインターフェイスからフォームを送信しようとしました。フォームには非表示フィールドのみが含まれ、表示などは重要ではありません。
フォームはモーダル自体の外部にあり、これがどのように可能かはわかりません
モーダル自体をフォームに追加し、HTML5 form = "form_list"を使用して、フォームをモーダル本文に追加し、jqueryを使用して送信を強制しようとしましたが、何も動作していないようです
以下は、私が必要なものに拡張しようとしたモーダルのサンプルで、OKボタンはjquery関数を呼び出そうとするために以前編集していたものです。
<div class='modal small hide fade' id='myModal' tabindex='-1' role='dialog' aria-labelledby='myModalLabel' aria-hidden='true'>
<div class='modal-header'>
<button type='button' class='close' data-dismiss='modal' aria-hidden='true'>×</button>
<h3 id='myModalLabel'>Delete Confirmation</h3>
</div>
<div class='modal-body'>
<p class='error-text'>Are you sure you want to delete the user?</p>
</div>");
<div class='modal-footer'>
<button class='btn btn-danger' data-dismiss='modal' aria-hidden='true'>Cancel</button>
<button class='btn btn-success' data-dismiss='modal'>Ok</button>
</div>
</div>
2018年に更新
送信後にモーダルを閉じますか?フォームがモーダルの内部にあるか外部にあるかにかかわらず、jQuery ajaxを使用してフォームを送信できる必要があります。
モーダル内のフォームの例を次に示します。
<a href="#myModal" role="button" class="btn" data-toggle="modal">Launch demo modal</a>
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Modal header</h3>
</div>
<div class="modal-body">
<form id="myForm" method="post">
<input type="hidden" value="hello" id="myField">
<button id="myFormSubmit" type="submit">Submit</button>
</form>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
<button class="btn btn-primary">Save changes</button>
</div>
</div>
そしてjQuery ajaxはフォームフィールドを取得して送信します。
$('#myFormSubmit').click(function(e){
e.preventDefault();
alert($('#myField').val());
/*
$.post('http://path/to/post',
$('#myForm').serialize(),
function(data, status, xhr){
// do something here with response;
});
*/
});
この回答は遅れていますが、とにかく誰かに役立つことを願って投稿しています。あなたのように、私はbootstrap modalの外にあるフォームを送信することも困難でした。また、現在のページ。多くの試行錯誤の後、ここに私のために働いたjQueryがあります:
$(function () {
$('body').on('click', '.odom-submit', function (e) {
$(this.form).submit();
$('#myModal').modal('hide');
});
});
この作業を行うには、モーダルフッターでこれを行いました
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
<button class="btn btn-primary odom-submit">Save changes</button>
</div>
Odom-submitのクラスへの追加に注意してください。もちろん、特定の状況に合った名前を付けることができます。
古いですが、読者がモーダルの使用方法の完全な例を持っていると便利かもしれません。
私は次のようにします( working example jsfiddle ):
$('button.btn.btn-success').click(function(event)
{
event.preventDefault();
$.post('getpostcodescript.php', $('form').serialize(), function(data, status, xhr)
{
// do something here with response;
console.info(data);
console.info(status);
console.info(xhr);
})
.done(function() {
// do something here if done ;
alert( "saved" );
})
.fail(function() {
// do something here if there is an error ;
alert( "error" );
})
.always(function() {
// maybe the good state to close the modal
alert( "finished" );
// Set a timeout to hide the element again
setTimeout(function(){
$("#myModal").hide();
}, 3000);
});
});
モーダルを簡単に処理するために、 eModal を使用することをお勧めします。これにより、bootstrap 3モーダルの基本使用でより高速に移動できます。
シンプル
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
<button class="btn btn-primary" onclick="event.preventDefault();document.getElementById('your-form').submit();">Save changes</button>
フォームの送信ボタンを非表示にして、モーダルボタンをクリックしたときにトリガーすることにより、何らかの方法でチートを行うこともできます。