Formを含むBootstrapモーダルがあります。モーダルには、送信、送信ボタンも含まれています。今、私の要件に従って、モーダルの送信ボタンクリックで、フォームは正常に送信されていますが、モーダルは閉じられていません。ここに私のHTMLがあります。
<div class="modal fade" id="StudentModal" tabindex="-1" role="dialog" aria-labelledby="StudentModalLabel" aria-hidden="true" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content">
<form action="~/GetStudent" class="form-horizontal" role="form" method="post" id="frmStudent">
<div class="modal-footer">
<div class="pull-right">
<button type="submit" class="btn btn-success"><i class="glyphicon glyphicon-ok"></i> Save</button>
<button type="button" class="btn btn-danger" data-dismiss="modal"><i class="glyphicon glyphicon-remove"></i> Close</button>
</div>
</div>
</form>
</div>
</div>
それを行う方法..私を助けてください..ありがとう..
そのコードを使用する
$('#button').submit(function(e) {
e.preventDefault();
// Coding
$('#IDModal').modal('toggle'); //or $('#IDModal').modal('hide');
return false;
});
[閉じる]ボタンと同じ属性を追加します。
data-dismiss="modal"
例えば.
<button type="submit" class="btn btn-success" data-dismiss="modal"><i class="glyphicon glyphicon-ok"></i> Save</button>
必要に応じてjQueryを使用することもできます。
$('#frmStudent').submit(function() {
// submission stuff
$('#StudentModal').modal('hide');
return false;
});
送信ボタンにIDを与える
<button id="btnSave" type="submit" class="btn btn-success"><i class="glyphicon glyphicon-trash"></i> Save</button>
$('#btnSave').click(function() {
$('#StudentModal').modal('hide');
});
また、最後のdivを閉じるのを忘れました。
</div>
お役に立てれば。
私はこのコードをうまく動作させますが、フォーム送信モデルボタンを一度開いてモデルを再度開くと、e.preventdefaultは機能ではないと言います..
送信フォームで発生するイベントで以下のコードを使用します
$('.modal').removeClass('in');
$('.modal').attr("aria-hidden","true");
$('.modal').css("display", "none");
$('.modal-backdrop').remove();
$('body').removeClass('modal-open');
このコードをもっと短くすることができます。
e.preventdefaultの解決策が見つかった場合はお知らせください
次の2つのオプションのいずれかを使用できます。
1)送信ボタンにデータ破棄を追加します。
<button type="submit" class="btn btn-success" data-dismiss="modal"><i class="glyphicon glyphicon-ok"></i> Save</button>
2)JSのように
$('#frmStudent').submit(function() {
$('#StudentModal').modal('hide');
});
私はRailsとajaxも使用していますが、同じ問題がありました。このコードを実行するだけです
$('#modalName').modal('hide');
それは私のために働いたが、jQueryを使用せずにそれを修正しようとしています。
Javascriptでdata-dismiss="modal"
を追加することも$("#modal").modal("hide")
を使用することもうまくいかなかった。確実にモーダルを閉じましたが、ajaxリクエストも送信されません。
代わりに、ajaxが成功した後、モーダルを含むパーシャルを再度レンダリングしました(RailsでRubyを使用しています)。また、bodyタグから"modal-open"
クラスも削除する必要がありました。これは基本的にモーダルをリセットします。モーダルを削除して追加するためのajaxリクエストが成功したときのコールバックが、他のフレームワークでも機能するはずであると思います。
AJAXフォーム送信の結果がモーダルの終了前にモーダルのスコープ外のHTMLに影響する場合、リストされた回答は機能しません。私の場合、結果はグレー表示(フェード)画面で、ページの更新を確認できましたが、ページ要素のいずれとも対話できませんでした。
私の解決策:
$(document).on("click", "#send-email-submit-button", function(e){
$('#send-new-email-modal').modal('hide')
});
$(document).on("submit", "#send-email-form", function(e){
e.preventDefault();
var querystring = $(this).serialize();
$.ajax({
type: "POST",
url: "sendEmailMessage",
data : querystring,
success : function(response) {
$('#send-new-email-modal').on('hidden.bs.modal', function () {
$('#contacts-render-target').html(response);
}
});
return false;
});
注:私のモーダルフォームは、既にAJAXを介してレンダリングされた親div内にあったため、イベントリスナーをドキュメントに固定する必要があります。
モーダルにキャンセルボタンがある場合(そうでない場合は、非表示の閉じるボタンを作成します)。このボタンのクリックイベントをシミュレートして、フォームを閉じることができます。コンポーネントにViewChildを追加します
export class HelloComponent implements OnInit {
@ViewChild('fileInput') fileInput:ElementRef;
閉じるボタンに#fileInputを追加します
<button class="btn btn-danger" #fileInput id="delete-node" name="button" data-dismiss="modal" type="submit">Cancelar</button>
プログラムでモーダルを閉じたい場合、閉じるボタンでクリックイベントをトリガーします。
this.fileInput.nativeElement.click();
このコードを試してください
$('#frmStudent').on('submit', function() {
$(#StudentModal).on('hide.bs.modal', function (e) {
e.preventDefault();
})
});
これを使用して、モーダルを同時に送信して閉じる
$('#form-submit').on('click', function(e){
e.preventDefault();
$('#con-close-modal').modal('toggle'); //or $('#IDModal').modal('hide');
$('#date-form').submit();
});
私は同じ問題を抱えていて、最終的にこのコードで動作するようになりました:
<%=form_with id: :friend_email_form, url: friend_emails_create_path do |f|%>
# form fields entered here
<div class="actions">
<%= f.submit "Send Email", class: 'btn btn-primary', "onclick":"submit_form();", "data-dismiss":"modal"%>
</div>
<script>
function submit_form() {
document.getElementById('friend_email_form').submit();
}
</script>
選択した答えは私にはうまくいきませんでした。