javascript - pattern 属性仅在页面重置后通过

标签 javascript jquery html forms shopify

我在 Shopify 添加到购物车表单中的自定义输入字段中添加了模式属性。

问题是模式验证器不会通过,除非我在验证中发现某些内容后刷新页面。

我尝试使用 .reset 重置表单并且它有效,但自定义验证消息在这种情况下不起作用。

<input required class="required" id="add-your-name-here" type="text" pattern="^[A-Za-z_]{1,15}" placeholder="{{ section.settings.text-custom-name-placeholder }}" name="properties[Ditt namn]">
var input = document.getElementById('add-your-name-here');

input.oninvalid = function(event) {
  if ($(".wgcurrent").hasClass("en")) { 
    event.target.setCustomValidity("Letters only please");  
  } else if ($(".wgcurrent").hasClass("sv")) {
    event.target.setCustomValidity("Vänligen ange endast bokstäver");
  }  

}

它是这样工作的,除了不会显示自定义验证消息。

var input = document.getElementById('add-your-name-here');

input.oninvalid = function(event) {
  if ($(".wgcurrent").hasClass("en")) { 
    document.getElementById("addtocart").reset();
    event.target.setCustomValidity("Letters only please");  
  } else if ($(".wgcurrent").hasClass("sv")) {
    document.getElementById("addtocart").reset();
    event.target.setCustomValidity("Vänligen ange endast bokstäver");
  }  

}

我希望无需刷新页面即可进行验证,因为这不是很好的用户体验。

最佳答案

您需要清除输入事件上的自定义验证消息。为此,请使用

setCustomValidity('');

检查下面的工作代码片段。

var input = document.getElementById('add-your-name-here');

input.oninput = function(event){
	event.target.setCustomValidity('');
}

input.oninvalid = function(event) {
    event.target.setCustomValidity("Letters only please");  
}
<form action="#">
<input required class="required" id="add-your-name-here" type="text" pattern="^[A-Za-z_]{1,15}" placeholder="Add text here" name="properties[Ditt namn]">

<button type="submit">Submit</button>

</form>

有关 Constraints Validation at MDN 的更多详细信息

关于javascript - pattern 属性仅在页面重置后通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57483866/

相关文章:

javascript - 我的数据应该在 ASP.NET MVC 应用程序中的何处进行验证?

javascript - 用于卡住表格标题的 Chrome css 绝对位置

mysql - EC2 服务器故障排除

jquery - 搜索功能无法选择的文本

javascript - 如何使用 AngularJS 在 &lt;input&gt; 字段中只允许数字 0-5?

php - Smarty - 如何将表单中的值添加到 mysql 查询?

javascript - 加倍这个修改后的 bootstrap 4 旋转木马只能正确运行一半(滚动循环停止工作)

javascript - Jquery 检查元素是否在内部

使用变量的 jQuery 动画

jquery ui 对话框 ui-widget-overlay 高度问题