添加规则后,Jquery表单验证不起作用
jquery form validation not working after rule added
我已经为控件添加了规则。但是表单验证后仍然没有显示错误。点击后,我有验证输入框和检查空字符串。如果空字符串显示错误,否则调用ajax方法。
编辑:
@Sparky建议。我在更新我的帖子。我加载输入框和锚标签后DOM加载。然后我为CompanyName
控件添加了验证规则。并检查验证在<a>
点击,它是假的。但是仍然没有显示错误文本
<form action="/Address/AddAddress" id="frmAddress" method="post" name="frmAddress" novalidate="novalidate">
<div id="AddEditAddressPlaceHolder>
<input name="CompanyName" class="SPE-Formcontrol" id="CompanyName" type="text" value="">
<a href="#" class="btn btn-success" onclick="javascript: submitcompanyfind();">Find Company</a>
javascript $.ajax({
url: 'AddressTypesListChange',
type: "Get",
data: { 'addressType': $("#AddressTypeslist").val()},
cache: false,
success: function(data) {
$('#AddEditAddressPlaceHolder').html(data);
$("#frmAddress").validate({
errorClass: "validationError"
});
$("#CompanyName").rules("add", {required: true,messages: {required: "Required"}});
}
});
function submitcompanyfind() {
$("#frmAddress").validate();
alert($("#frmAddress").valid()); // it is false but no error showing.
if ($('#CompanyName').val() !="") {
$.ajax({
url: 'FindCompanyList',
type: 'Post',
data: $("#frmAddress").serialize(),
success: function(data) {
var count = Object.keys(data).length;
//load the company table rows
LoadCompanyList(data);
$("#hdnDivComapnyfinder").show();
},
error: function(xhr, ajaxOptions, thrownError) {
}
});
}
}
页面加载后的html源代码是这样的
<div id="AddEditAddressPlaceHolder">
<input name="CompanyName" class="SPE-Formcontrol
input-validation-error" id="CompanyName" type="text"
value="" aria-required="true"
aria-describedby="CompanyName-error" aria-invalid="true">
</div>
编辑:以下答案是OP对他的问题的原始版本。
这个问题是由于在点击提交按钮时触发的函数中错误地调用.validate()
方法引起的。
.validate()
方法是插件的初始化,只在DOM准备好时被调用一次。
另一个问题是ajax()
的位置。.ajax()
只属于.validate()
方法的submitHandler
选项。
$(document).ready(function() {
$("#frmAddress").validate({
rules: {
CompanyName: {
required: true
}
},
messages: {
CompanyName: {
required: "Required"
}
},
errorClass: "validationError",
submitHandler: function(form) {
// your ajax function here,
return false;
}
});
});
不要忘记从"提交按钮"中删除你的内联JavaScript…
<a href="#" class="btn btn-success">Find Company</a>
既然你使用锚标记而不是真正的type="submit"
button
或input
,你需要编写一个click
处理程序函数,通过编程调用提交来触发验证…
$('#frmAddress a').on('click', function() {
$('#frmAddress').submit();
});
工作演示:http://jsfiddle.net/3nsapjrh/
您不需要将novalidate="novalidate"
属性放在<form>
标记中。
第二个答案:回复编辑op。
我不打算为一个自最初发布以来已经彻底改变的问题包含特定的代码。相反,我将回顾在这种情况下需要遵循的关键点……
-
加载页面,包括相关插件
-
触发
ajax()
加载和/或创建表单和/或其所有输入字段。{表单现在完全存在} -
调用
.validate()
来初始化新创建表单上的插件。您不需要.rules()
方法,因为此时可以在.validate()
中声明规则。
:
一旦
.validate()
被调用,无论什么原因都不能再调用它。 只能使用你永远不需要任何内联JavaScript。删除您的
onclick="javascript: submitcompanyfind();"
和submitcompanyfind()
功能。当您不使用
type="submit"
时,您需要构造一个简单的click
处理程序来触发.submit()
。如果当您调用click
处理程序时锚标记还不存在,您只需要"委托"它。$('#frmAddress').on('click', 'a', function() { $(this).submit(); });
如果你用
ajax()
提交表单,那么你必须把ajax()
函数放在.validate()
方法的submitHandler
选项中。
rules()
方法动态添加/删除规则。- 解析javascript表单验证器
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 自定义表单验证和提交
- Javascript表单验证的缺点
- Jquery的表单验证不起作用
- 语义ui表单验证:图像url
- jQuery表单验证适用于Mozilla和Internet Explorer,但不适用于Chrome或Safari
- JavaScript表单验证-“;“错误”;不按需要工作
- Mailchimp内联表单验证不适用于JS加载的HTML
- jQuery/JS获胜't在表单验证后重定向
- jquery表单验证复选框错误显示
- javascript表单验证-数值和密码
- 我想知道如何在javascript中进行表单验证
- jQuery表单验证(如果==“执行此操作”)仅适用于第一次输入
- 使用记录保存的消息进行表单验证
- 表单验证工作不正常,在不检查条目的情况下继续
- 如何对未知表单元素进行表单验证
- 使用ajax、php和mysql进行表单验证
- JS表单验证未发生
- 表单验证jsphp路径