javascript - 我想限制用户输入以 5 结尾的数字
问题描述
这是文本字段。我希望用户只输入像 210,220,230,... 之类的值,并限制输入像 215,225,...
我正在寻找建议。我对 javascript 了解不多。
解决方案
您可以从,或处理程序setCustomValidity()
中试验input
元素 ( https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement )。如果您对该值不满意,请设置错误消息,否则设置空字符串。只要错误信息设置为非空,就会显示并且表单拒绝提交:onblur
onchange
oninput
function check5() {
cgiftcardq.setCustomValidity(cgiftcardq.value.endsWith('5')?"Nope, it can not end with 5":"");
}
<form>
<input name="cgiftcardq" class="text_field" id="cgiftcardq" size="3" autocomplete="off" type="text" onblur="check5()">
<input type="submit" value="Send">
</form>
(StackOverflow 片段会干扰表单提交 - 可能是作为安全性的一部分 - 所以成功提交只会使表单消失)
由于setCustomValidity()
并非在任何地方都可以使用(根据兼容性表,它不适用于非 Andorid 手机),也可能会提到经典的“预算”解决方案:只要您对输入不满意,您可以简单地禁用发送按钮:
function check5() {
if(cgiftcardq.value.endsWith('5')){
send.disabled=true;
message.innerHTML="Nope, it can not end with 5";
} else {
send.disabled=false;
message.innerHTML="OK";
}
}
<form>
<input name="cgiftcardq" class="text_field" id="cgiftcardq" size="3" autocomplete="off" type="text" oninput="check5()">
<input id="send" type="submit" value="Send" disabled>
</form>
<div id="message"></div>
推荐阅读
- github-actions - firebase-hosting-merge.yml 总是卡在 npm run build
- algorithm - 带负权查询的 Dijkstra 算法
- c# - 更改 SelectedItem 触发器获取而不是设置
- vue.js - Vue getter 不起作用 - 仅在函数字符串中获取内容
- javascript - Vanilla JS:滑块输入/鼠标移动触发过于频繁 -> 函数调用过多
- javascript - 在 Vue.js 中获取选择的值
- excel - SAP VBA 自动化 FBL5N
- ethereum - 标识符未找到或不唯一?
- paraview - 如何在 Paraview 中测量曲面网格上的曲线长度
- r - 使用 ifelse 和 case_when 函数对信息进行分组时出现问题