[英]How to show the bootstrap 4 validation feedback using jquery?
我想要实现的是:使用 ajax 调用从服务器获取表单验证信息,并在.invalid-feedback
显示错误/无效反馈, .invalid-feedback
:invalid
css 应用于输入字段。
<form id="register-form" novalidate>
<div class="form-group">
<label class="sr-only" for="first_name">first name</label>
<input type="text" id="first_name" name="first_name" value="" class="form-control" >
<div class="invalid-feedback"></div>
</div>
....other inputs
</form>
我能够使用以下方法在相关的invalid-feedback
设置错误消息:
$.ajax({
url: actionUrl,
method: "POST",
dataType: "json",
timeout: 5000,
data: form.serialize(),
success: function (response) {
if(response.errors === ''){
pageRedirect("register/login");
} else {
$.each(response.errors, function(field, error) {
form.find('[name="' + field + '"]').siblings('.invalid-feedback').text(error);
});
//feedback is set now how to show them??
}
},
正如此处Bootstrap 的 Forms 文档中所述:
服务器端
我们建议使用客户端验证,但如果您需要服务器端,您可以使用 .is-invalid 和 .is-valid 指示无效和有效的表单字段。 请注意,这些类也支持 .invalid-feedback。
简而言之,您需要添加 CSS 类is-invalid
以形成验证错误的表单控件。 当你这样做时:
invalid-feedback
CSS 类的同级 div 将呈现为红色文本这是一个代码片段,通过“模拟”响应说明了这一点。 尝试单击验证按钮:
var form = $("form").first(); $("#validate").click(function() { var mockResponse = { errors : { 'first_name': 'First name must not be blank', 'last_name': 'Last name must not be blank' } }; $.each(mockResponse.errors, function(fieldName, error) { let field = form.find('[name="' + fieldName + '"]'); field.addClass("is-invalid"); let immediateSibling = field.next(); if (immediateSibling.hasClass('invalid-feedback')) { immediateSibling.text(error); } else { field.after("<div class='invalid-feedback'>" + error + "</div>") } }); return false; });
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <body class="bg-light"> <div class="container"> <form id="register-form" novalidate> <div class="form-group"> <label class="sr-only" for="first_name">First Name</label> <input type="text" id="first_name" name="first_name" value="" placeholder="First Name" class="form-control" > </div> <div class="form-group"> <label class="sr-only" for="last_name">Last Name</label> <input type="text" id="last_name" name="last_name" value="" placeholder="Last Name" class="form-control" > </div> <div class="form-group"> <label class="sr-only" for="email">Email Name</label> <input type="text" id="email" name="email" value="" placeholder="Email" class="form-control" > </div> <button id="validate" class="btn btn-primary btn-lg btn-block" type="submit">Validate</button> </form> </div>
https://getbootstrap.com/docs/4.5/components/forms/#custom-styles
如您所见,此处显示的脚本根本不使用 AJAX。 客户端的表单验证完全在客户端完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.