私はモーダルを初めて使用します。フォームがあり、ユーザーが送信をクリックすると、ユーザーが送信するかどうかを確認するモーダルが表示されます。モーダルにはフォームフィールドからのユーザー入力も含まれます。インターネットで検索しましたが、ニーズに合ったものが見つかりません。そして、私が見るのは、リンク上でモーダルを開くためにクリックイベントにタグを付けることだけです。入力タイプのサブミットがあります。例やアイデアを教えてください。ありがとう!これが私のサンプルフォームです。
<form role="form" id="formfield" action="inc/Controller/OperatorController.php" method="post" enctype="multipart/form-data" onsubmit="return validateForm();">
<input type="hidden" name="action" value="add_form" />
<div class="form-group">
<label>Last Name</label><span class="label label-danger">*required</span>
<input class="form-control" placeholder="Enter Last Name" name="lastname" id="lastname">
</div>
<div class="form-group">
<label>First Name</label><span class="label label-danger">*required</span>
<input class="form-control" placeholder="Enter First Name" name="firstname" id="firstname">
</div>
<input type="submit" name="btn" value="Submit" id="submitBtn" class="btn btn-default" data-confirm="Are you sure you want to delete?"/>
<input type="button" name="btn" value="Reset" onclick="window.location='fillup.php'" class="btn btn-default" data-modal-type="confirm"/>
</form>
そのため、ボタンをクリックすると、ユーザーが入力した値を一覧表示するモーダルを開き、送信することができます。
このために、最初に_input type="submit"
_を_input type="button"
_に変更し、_data-toggle="modal" data-target="#confirm-submit"
_を追加して、クリックするとモーダルがトリガーされるようにします。
_<input type="button" name="btn" value="Submit" id="submitBtn" data-toggle="modal" data-target="#confirm-submit" class="btn btn-default" />
_
次に、モーダルダイアログ:
_<div class="modal fade" id="confirm-submit" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
Confirm Submit
</div>
<div class="modal-body">
Are you sure you want to submit the following details?
<!-- We display the details entered by the user here -->
<table class="table">
<tr>
<th>Last Name</th>
<td id="lname"></td>
</tr>
<tr>
<th>First Name</th>
<td id="fname"></td>
</tr>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<a href="#" id="submit" class="btn btn-success success">Submit</a>
</div>
</div>
</div>
</div>
_
最後に、少しのjQuery:
_$('#submitBtn').click(function() {
/* when the button in the form, display the entered values in the modal */
$('#lname').text($('#lastname').val());
$('#fname').text($('#firstname').val());
});
$('#submit').click(function(){
/* when the submit button in the modal is clicked, submit the form */
alert('submitting');
$('#formfield').submit();
});
_
関数validateForm()
の動作を指定していませんが、これに基づいて、フォームの送信を制限する必要があります。または、フォームのボタン_#submitBtn
_クリックでその関数を実行し、検証の確認後にモーダルをロードできます。
$('form button[type="submit"]').on('click', function () {
$(this).parents('form').submit();
});
いくつかの答えがHTML5 required
属性をトリガーしていないことに気づきました(clickingのアクションではなく、 form sendのアクションで、入力が空の場合はそれをバイパスします):
<form id='xform'></form>
_を用意し、最後に_<input type='submit'>
_を配置します。<input type='text' name='xconf' value='' required>
_modal_1_accept
_を承認ボタンに追加します。modal_2_accept
_を受け入れボタンに追加します。m2_Txt
_を追加します。フォームが送信される前にインターセプトするJS:
_$("#xform").submit(function(e){
var msg, conf, preventSend;
if($("#xform").attr("data-send")!=="ready"){
msg="Error."; //default error msg
preventSend=false;
conf=$("[name='xconf']").val().toLowerCase().replace(/^"|"$/g, "");
if(conf===""){
msg="The field is empty.";
preventSend=true;
}else if(conf!=="ok"){
msg="You didn't write \"ok\" correctly.";
preventSend=true;
}
if(preventSend){ //validation failed, show the error
$("#m2_Txt").html(msg); //displayed text on modal_2_errMsg
$("#modal_2_errMsg").modal("show");
}else{ //validation passed, now let's confirm the action
$("#modal_1_confirm").modal("show");
}
e.preventDefault();
return false;
}
});
_
`9。モーダルからボタンをクリックするときにもいくつかのもの:
_$("#modal_1_accept").click(function(){
$("#modal_1_confirm").modal("hide");
$("#xform").attr("data-send", "ready").submit();
});
$("#modal_2_accept").click(function(){
$("#modal_2_errMsg").modal("hide");
});
_
重要な注意:したがって、追加ボタン$("#modal_1_accept")
をクリックするだけで検証がパスしたと見なされ、_"ready"
_属性:
$("#modal_1_confirm").modal("show");
が表示されるonlyであるため、$("#modal_1_accept")
をクリックする必要があるからです。最初にフォームを検証せずに到達できません。ブラウザのデフォルトのプロンプトウィンドウを使用できます。基本的な<input type="submit" (...) >
tryの代わりに:
<button onClick="if(confirm(\'are you sure ?\')){ this.form.submit() }">Save</button>