我有输入文本字段,该文本字段应仅允许数字值0-9
,并且长度应恰好为八位数字。这应该由onChange
事件控制。用户完成操作后,应触发输入验证。如果值正确,则Ajax请求将到达服务器,否则,用户应该像在HTML 5验证中的其他消息一样看到该消息。这是我的代码示例:
$('#userid').on('change', checkUser);
function checkUser(e) {
var fldObj = $(this);
if (!e.target.checkValidity()) {
fldObj[0].setCustomValidity('Invalid User ID.');
console.log(fldObj.val());
} else {
//send ajax request
console.log('User ID is valid!');
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" name="userid" id="userid" value="" pattern="[0-9]{8}" placeholder="Enter User ID">
我的代码无法正常工作。如果输入无效值,则看不到该消息。如果有人知道消息不显示的原因,请告诉我。
答案 0 :(得分:1)
仅当输入是表单的一部分时才报告有效期。尝试输入无效的值,然后在下面的代码段中提交表单。
$('#userid').on('change', checkUser);
function checkUser(e) {
var fldObj = $(this);
if (!e.target.checkValidity()) {
fldObj[0].setCustomValidity('Invalid User ID.');
fldObj[0].parentElement.reportValidity();
console.log(fldObj.val());
} else {
//send ajax request
console.log('User ID is valid!');
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<input type="text" name="userid" id="userid" value="" pattern="[0-9]{8}" placeholder="Enter User ID">
<button type="submit">Submit</button>
</form>
如果您不想等待单击提交按钮,请签出HTMLFormElement.reportValidity()
。