Jquery geIcon').addClass(response.gmIcon); $('#globalMessageTitle').empty(); $('#globalMessageTitle').append(response.gmTitle); //设置消息 $('#globalMessagePH').empty(); $('#globalMessagePH').append(response.message); //设置uniq错误id if(response.id!=null){ $('#globalMessageID').addClass('d-block'); $('#globalMessageIDPH').empty(); $('#globalMessageIDPH').append(response.id); } //设置堆栈跟踪 if(response.trace!=null){ $('#globalMessageTrace').addClass('d-block'); $('#globalMessageRaceph').empty(); $('#globalMessageTracePH').append(response.trace); } //设置页脚 if((response.showContactAdmin==true)| |(response.goback!=null)){ $('#globalMessageFooter').addClass('d-block'); //联系管理员 如果(response.showContactAdmin==true){ $('#globalMessageMailLink').addClass('d-block'); $('globalMessageMailLinkPH').attr('href',response.adminMailtoLnk); } //回去 if(response.goback!=null){ $('#globalMessageGoBackLink').addClass('d-block'); $('#globalMessageGoBackLinkPH').attr('href',response.goback); } } 打破 // ---------------------------- //致命错误 // ---------------------------- 案例错误类型错误: //隐藏内容,如果我们得到一个致命的,以防止用户摆弄和不阅读的消息! $('#content').addClass('d-none'); $('#fatalError').addClass('d-block'); //设置消息 $('fatalErrorMessagePH').empty(); $('#fatalErrorMessagePH').append(response.message); //重置邮件到链接 $('fatalErrorMailLink').attr('href',response.adminMailToLink); //设置堆栈跟踪 if(response.trace!=null){ $('#fatalErrorTrace').addClass('d-block'); $('fatalErrorTracePH').empty(); $('#fatalErrorTracePH').append(response.trace); } //设置uniq错误id if(response.id!=null){ $('#fatalerroid').addClass('d-block'); $('fatalErrorIDPH').empty(); $('#fatalErrorIDPH').append(response.id); } //设置“返回”url if(response.goback!=null){ $('#fatalErrorGoBack').addClass('d-block'); $('fatalErrorGoBackLink').attr('href',response.goback); } 打破 // ---------------------------- //输入错误 // ---------------------------- 案例错误\u类型\u输入者: for(响应.fields中的变量字段){ var msg=eval('response.fields.'+field); $(“#”+字段+”\u inputeror').addClass('d-block')) $(“#”+字段+”\u输入程序\u消息”).empty(); $(“#”+字段+”\u输入程序\u消息”).append(msg); } 打破 违约: 错误('从响应中获取了无效的错误类型!'); } } /** *验证() *验证字段是否为空 *@param输入表单元素 *@返回布尔值 */ 功能验证(输入){ 如果(FormSubmitedOnce==真){ if(input.hasAttribute('required')){ if(input.value.trim()=''){ input.classList.remove('is-valid'); input.classList.add('is-invalid'); 返回false; } 否则{ input.classList.remove('is-invalid'); input.classList.add('is-valid'); 返回true; } } 否则{ //如果我们到达这里,那么没有标记为“必需”的任何其他输入都是有效的 input.classList.add('is-valid'); } } } 用户名: 此字段必填! 错误 × 电子邮件: 此字段必填! 错误 × 评论:

Jquery geIcon').addClass(response.gmIcon); $('#globalMessageTitle').empty(); $('#globalMessageTitle').append(response.gmTitle); //设置消息 $('#globalMessagePH').empty(); $('#globalMessagePH').append(response.message); //设置uniq错误id if(response.id!=null){ $('#globalMessageID').addClass('d-block'); $('#globalMessageIDPH').empty(); $('#globalMessageIDPH').append(response.id); } //设置堆栈跟踪 if(response.trace!=null){ $('#globalMessageTrace').addClass('d-block'); $('#globalMessageRaceph').empty(); $('#globalMessageTracePH').append(response.trace); } //设置页脚 if((response.showContactAdmin==true)| |(response.goback!=null)){ $('#globalMessageFooter').addClass('d-block'); //联系管理员 如果(response.showContactAdmin==true){ $('#globalMessageMailLink').addClass('d-block'); $('globalMessageMailLinkPH').attr('href',response.adminMailtoLnk); } //回去 if(response.goback!=null){ $('#globalMessageGoBackLink').addClass('d-block'); $('#globalMessageGoBackLinkPH').attr('href',response.goback); } } 打破 // ---------------------------- //致命错误 // ---------------------------- 案例错误类型错误: //隐藏内容,如果我们得到一个致命的,以防止用户摆弄和不阅读的消息! $('#content').addClass('d-none'); $('#fatalError').addClass('d-block'); //设置消息 $('fatalErrorMessagePH').empty(); $('#fatalErrorMessagePH').append(response.message); //重置邮件到链接 $('fatalErrorMailLink').attr('href',response.adminMailToLink); //设置堆栈跟踪 if(response.trace!=null){ $('#fatalErrorTrace').addClass('d-block'); $('fatalErrorTracePH').empty(); $('#fatalErrorTracePH').append(response.trace); } //设置uniq错误id if(response.id!=null){ $('#fatalerroid').addClass('d-block'); $('fatalErrorIDPH').empty(); $('#fatalErrorIDPH').append(response.id); } //设置“返回”url if(response.goback!=null){ $('#fatalErrorGoBack').addClass('d-block'); $('fatalErrorGoBackLink').attr('href',response.goback); } 打破 // ---------------------------- //输入错误 // ---------------------------- 案例错误\u类型\u输入者: for(响应.fields中的变量字段){ var msg=eval('response.fields.'+field); $(“#”+字段+”\u inputeror').addClass('d-block')) $(“#”+字段+”\u输入程序\u消息”).empty(); $(“#”+字段+”\u输入程序\u消息”).append(msg); } 打破 违约: 错误('从响应中获取了无效的错误类型!'); } } /** *验证() *验证字段是否为空 *@param输入表单元素 *@返回布尔值 */ 功能验证(输入){ 如果(FormSubmitedOnce==真){ if(input.hasAttribute('required')){ if(input.value.trim()=''){ input.classList.remove('is-valid'); input.classList.add('is-invalid'); 返回false; } 否则{ input.classList.remove('is-invalid'); input.classList.add('is-valid'); 返回true; } } 否则{ //如果我们到达这里,那么没有标记为“必需”的任何其他输入都是有效的 input.classList.add('is-valid'); } } } 用户名: 此字段必填! 错误 × 电子邮件: 此字段必填! 错误 × 评论:,jquery,bootstrap-4,Jquery,Bootstrap 4,它不起作用的原因是您没有将标签和输入包装到表单组中div 验证已经改变了它过去用于引导的方式-这意味着是有效的,而is invalid不知道在哪里查找,因此当它不在表单组div wrapped中时,它将is invalid消息应用于所有匹配的div 我添加了标签,以使其更美观,而不仅仅是使用电子邮件: 如果您现在提交的表单中没有任何值,它将显示错误u-一旦您输入,错误将消失 运行下面的代码段以查看其运行情况 /** *AJAX Post脚本 */ 常量错误类型错误=1; 常量错误类型输入程序=

它不起作用的原因是您没有将标签和输入包装到
表单组中
div

验证已经改变了它过去用于引导的方式-这意味着
是有效的
,而i
s invalid
不知道在哪里查找,因此当它不在表单组div wrapped中时,它将
is invalid
消息应用于所有匹配的
div

我添加了
标签
,以使其更美观,而不仅仅是使用电子邮件:

如果您现在提交的表单中没有任何值,它将显示错误u-一旦您输入,错误将消失

运行下面的代码段以查看其运行情况

/**
*AJAX Post脚本
*/
常量错误类型错误=1;
常量错误类型输入程序=2;
常量错误类型全局消息=3;
//仅在表单提交一次后运行validate()函数!
//否则,用户将在键入时立即得到验证!只是视觉上的东西。。。
var formSubmittedOnce=错误;
/**
*submitFormData()
*使用AJAX调用序列化和发布表单数据
*
*示例:onClick=“submitFormData('frm1',['username','email'])”
* 
*@param string formid本质上是包含所有表单元素(如等)的容器的“id”
*@param array fields可能产生输入错误的字段名列表(即:[“用户名”,“电子邮件])
*/
函数submitFormData(formid,字段){
//国旗表格提交一次!
FormSubmittednce=真;
// ----------------------------------
//首先重新放置所有错误容器
// ----------------------------------    
$('#fatalError').removeClass('d-block');
$(“#fatalerroid”).removeClass('d-block');
$('fatalErrorTrace').removeClass('d-block');
$('fatalErrorGoBack').removeClass('d-block');
$(“#globalMessage”).removeClass('d-block');
$('#globalMessageID')。removeClass('d-block');
$(“#globalMessageTrace”).removeClass('d-block');
$('#globalMessageFooter').removeClass('d-block');
$(“#globalMessageMailLink”).removeClass('d-block');
$('#globalMessageGoBackLink').removeClass('d-block')
<div>
  Username: <input type="text" name="username" aria-describedby="username_required" class="form-control is-invalid" oninput="validate(this)" required/><br>
  <div id="username_required" class="pl-1 invalid-feedback">
    This field is required!
  </div>
</div>

<div>
  Email: <input type="text" name="email" aria-describedby="email_required" class="form-control is-valid" oninput="validate(this)" required/><br>
  <div id="email_required" class="pl-1 invalid-feedback">
    This field is required!
  </div>
</div>