モーダルで開くフォームがあります。そのための検証を実装したい。ただし、jQuery フォームの検証を実装しようとしましたが、無駄でした。フォームの検証をトリガーできない主な理由は、フォームの送信ボタンが JavaScript を使用してトリガーされることです。フォームが送信されている間、検証部分は実行されません。
この問題の回避策は何ですか?
ここにフォームがあります::
<div id="__paymentModal" 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">Make Payment Request</h3>
</div>
<div class="modal-body">
<form method="post" action="" id="__paymentForm" class="form-horizontal">
<input type="text" name="name" value="" placeholder="Payee Name">
<input type="text" name="phone" value="" placeholder="Phone"/>
<input type="text" name="address" value="" placeholder="Address"/>
<input type="text" name="pincode" value="" placeholder="Pincode" />
<input type="text" name="amount" value="" placeholder="Amount"/>
</form>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true" onclick="javascript: reset()">Close</button>
<button class="btn btn-primary" onclick="javascript: sendPaymentRequest()">Save changes</button>
</div>
</div>
そして、フォーム送信をトリガーする JavaScript。
var paymentReqBttnObject = undefined;
function reset() {
window.paymentReqBttnObject = undefined;
}
function openModalForPaymentReq(ele) {
$('#__paymentForm input[type="text"]').val("");
$('#__paymentModal').modal( { backdrop: false });
window.paymentReqBttnObject = ele;
}
function sendPaymentRequest() {
$.ajax({
type: "post",
url: url,
data: $('#__paymentForm').serialize(),
processData : true,
dataType: 'html',
beforeSend: function() {
$('#__paymentModal').hide();
},
success: function(data, textStatus, xhr) {
var json = $.parseJSON(data);
if(json.success == "request_made") {
$(paymentReqBttnObject).addClass("btn-requested").html("Payment Requested");
$(paymentReqBttnObject).unbind("click");
} else {
}
window.reset();
},
error: function(xhr, textStatus, errorThrown) {
window.reset();
}
});
}
jqueryフォームバリデーターも試しましたが、フォームの送信中にエラーが表示されませんでした。null 値のみが更新されるデータベースにすぐに送信されます。
検証 jQuery
$(document).ready(function(){
$("#__paymentForm").validate({
rules: {
phone: { //input name: fullName
required: true, //required boolean: true/false
minlength: 10,
maxlength: 10
},
address: {
required: true
},
pincode: {
required: true,
minlength: 6,
maxlength: 6
}
amount: {
required: true
}
},
messages: { //messages to appear on error
phone: { //input name: fullName
required: "Your Phone Number", //required boolean: true/false
minlength: "Correct contact number.",
maxlength: "Correct contact number."
},
address: {
required: "Where to collect money."
},
pincode: {
required: "Pincode is required to locate the city and all others.",
minlength: "Correct Pincode Please.",
maxlength: "Correect Pincode Please"
}
amount: {
required: "What is the amount."
},
},
submitHandler: function(form) {
$(form).ajaxSubmit({
success: function(){
alert('inside');
}
});
}
});
})