jquery - 表单提交时未触发 JQuery 验证
问题描述
我在提交表单时无法触发 jquery 验证。该表单在模式窗口中呈现,并从两个单独的页面调用。一个工作正常并在提交之前进行验证,但是,另一个只是提交表单并且不会触发验证错误。
它是一个 CodeIgniter 系统,因此每个源页面都将模式调用为视图并在运行时加载。
每个源页面在页面底部都有 jquery 脚本。
jquery 脚本显然位于不同的文件中,因此对它们进行了“差异检查”。它们完全相同。
我检查了 jquery 选择器正在调用 html 表单元素的 id 属性。我还检查了这对于 html 页面是唯一的。
// modal is called from each source page as follows:
<?php $this->load->view('partials/modal-book-appointment', $data) ?>
// modal form is defined as follows:
<form action="<?= base_url(); ?>Appointment/savepatientform" method="post" da role="form" class="form-horizontal"
id="submitform-validation" enctype="multipart/form-data">
...
// modal submit buttons:
<div class="form-group">
<div class="col-md-12">
<a onclick="$(this).closest('form').submit()" type="submit" class="btn-lg btn-success pull-right">Book an Appointment</a>
<a onclick="$('#modal_book_appointment').modal('hide')" type="button" class="cancel pull-left" data-dismiss="modal">Cancel</a>
</div>
</div>
// jquery validation code.
$(function () {
// Setup form validation on the #register-form element
$("#submitform-validation").validate({
// Specify the validation rules
rules: {
fname: "required",
lname: "required",
phone: "required",
email: {
required: true,
email: true
},
agree: "required"
},
// Specify the validation error messages
messages: {
fname: "Please enter your first name",
lname: "Please enter your last name",
email: "Please enter a valid email address",
phone: "Please enter your phone number",
agree: "Please select the check box I acknowledge that this represents an accurate medical and dental history."
},
submitHandler: function (form) {
form.submit();
}
});
即使未选择“同意”按钮,表单也应该验证但提交。
解决方案
我在升级我的 jquery 2.2.4 -> 3.4.1 时遇到了类似的问题
我有一个捕捉提交的库(我无法更改),做了一堆东西,然后调用 form.submit() (但 HTMLFormElement 表单,而不是 jquery 重载)
jquery 2.2.4 确实触发了它的监听器,3.4.1 不再触发
我只改变了 jquery lib
我什至喜欢这样: $('#myForm').submit(function(){...});
我尝试使用 bind(..) 和 on(...) 但由于它们是 ofc 的别名,它并没有改变任何东西。
我最终做了有史以来最丑陋的调整,但这很有效:
var form = document.getElementById('inscription');
var oldSubmit = form.submit;
form.submit = function() {
form.submit = oldSubmit;
$(form).trigger("submit");

}
丑陋,但直到我明白如何正确附加它与新的jquery,这将是
推荐阅读
- azure - 如何以编程方式向外部用户授予对 Azure 资源组的访问权限
- java - SearchBar 和 RecyclerView 和 CardView 的问题
- ldap - 使用 userPrincipleName 作为过滤器时,ldapsearch 不返回结果?
- mysql - 如何将多个列与 MySql 中的其他表进行比较
- mapbox - 在地图上添加 GeoJSON 作为标记
- python - Python exersice 接受 4 位数的 bin 编号并将可被 5 整除的列表放入列表中。
- firebase - Stripe Connect Firebase 功能
- google-apps-script - 如何通过单击按钮从谷歌表格中的单元格打开网站?
- http - 芭蕾舞女演员:将参数传递给客户端请求
- linux - Bash:回显显示空白值