希望 html 模式属性在不点击提交按钮的情况下工作
Want html pattern attribute work without hitting a submit button
我正在进行验证并放置了一个 html 模式属性,我想在不点击 save/submit 按钮的情况下查看错误消息。当我在字段外单击时,它应该根据我的模式条件进行验证。
这是我的代码:
<div class="col-md-2">
<div class="form-group">
<label>Extra Credit Days<span class="text-danger">*</span></label>
<input class="form-control" type="text" id="txt_credit_days" name=""
pattern="(?=.*\d)(?=.*[WQYDM])(?=.*[WQYDM]).{1,3}"title="Enter in specified
format">
</div> </div>
JQuery 或 JavaScript 是什么?
基于此answer。
您可以使用 javascript 手动触发提交,并在输入的更改事件上防止默认。
这是我在 Chrome 上适用的一种方法:
- 创建一个隐藏的提交按钮。
- 监听
input
字段上的 focusout
事件。
- 在隐藏的提交按钮上触发
click
。
只要字段失去焦点(在字段外单击或跳出字段),这应该会触发 HTML5 验证。
片段:
let input = document.getElementById("txt_credit_days");
let inputButton = document.getElementById("inputButton");
input.addEventListener("focusout", function() {
inputButton.click();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col-md-2">
<div class="form-group">
<label>Extra Credit Days<span class="text-danger">*</span></label>
<form id="form">
<input class="form-control" type="text" id="txt_credit_days" name="" pattern="(?=.*\d)(?=.*[WQYDM])(?=.*[WQYDM]).{1,3}" title="Enter in specified
format">
<input type="submit" class="hide" id="inputButton" style="visibility:hidden;">
</form>
</div>
</div>
注意:如果您不需要基于浏览器的验证警报(即,您宁愿显示自己的警报对话框或通知用户验证失败的其他消息),那么您可以使用 checkValidity()
输入元素上的方法。
您可以验证模糊正则表达式。如果给定错误字符串
,请执行一些操作
$("input[pattern]").blur(function(){
var elem = $(this);
var pattern = new RegExp(elem.attr("pattern"));
if (pattern.test(elem.val())) {
alert('okay');
} else {
alert('bad');
//disable form submit
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="col-md-2">
<div class="form-group">
<label>Extra Credit Days<span class="text-danger">*</span></label>
<input class="form-control" type="text" id="txt_credit_days" name=""
pattern="(?=.*\d)(?=.*[WQYDM])(?=.*[WQYDM]).{1,3}"title="Enter in specified
format">
</div> </div>
我正在进行验证并放置了一个 html 模式属性,我想在不点击 save/submit 按钮的情况下查看错误消息。当我在字段外单击时,它应该根据我的模式条件进行验证。
这是我的代码:
<div class="col-md-2">
<div class="form-group">
<label>Extra Credit Days<span class="text-danger">*</span></label>
<input class="form-control" type="text" id="txt_credit_days" name=""
pattern="(?=.*\d)(?=.*[WQYDM])(?=.*[WQYDM]).{1,3}"title="Enter in specified
format">
</div> </div>
JQuery 或 JavaScript 是什么?
基于此answer。 您可以使用 javascript 手动触发提交,并在输入的更改事件上防止默认。
这是我在 Chrome 上适用的一种方法:
- 创建一个隐藏的提交按钮。
- 监听
input
字段上的focusout
事件。 - 在隐藏的提交按钮上触发
click
。
只要字段失去焦点(在字段外单击或跳出字段),这应该会触发 HTML5 验证。
片段:
let input = document.getElementById("txt_credit_days");
let inputButton = document.getElementById("inputButton");
input.addEventListener("focusout", function() {
inputButton.click();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col-md-2">
<div class="form-group">
<label>Extra Credit Days<span class="text-danger">*</span></label>
<form id="form">
<input class="form-control" type="text" id="txt_credit_days" name="" pattern="(?=.*\d)(?=.*[WQYDM])(?=.*[WQYDM]).{1,3}" title="Enter in specified
format">
<input type="submit" class="hide" id="inputButton" style="visibility:hidden;">
</form>
</div>
</div>
注意:如果您不需要基于浏览器的验证警报(即,您宁愿显示自己的警报对话框或通知用户验证失败的其他消息),那么您可以使用 checkValidity()
输入元素上的方法。
您可以验证模糊正则表达式。如果给定错误字符串
,请执行一些操作$("input[pattern]").blur(function(){
var elem = $(this);
var pattern = new RegExp(elem.attr("pattern"));
if (pattern.test(elem.val())) {
alert('okay');
} else {
alert('bad');
//disable form submit
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="col-md-2">
<div class="form-group">
<label>Extra Credit Days<span class="text-danger">*</span></label>
<input class="form-control" type="text" id="txt_credit_days" name=""
pattern="(?=.*\d)(?=.*[WQYDM])(?=.*[WQYDM]).{1,3}"title="Enter in specified
format">
</div> </div>