【发布时间】:2016-10-11 12:30:50
【问题描述】:
我想限制 <input type=number> 只接受 2 的幂,例如 1、2、4、8、16 ...
是否有一个纯 HTML 解决方案,或者我应该使用 javascript?
【问题讨论】:
标签: javascript html input numbers
我想限制 <input type=number> 只接受 2 的幂,例如 1、2、4、8、16 ...
是否有一个纯 HTML 解决方案,或者我应该使用 javascript?
【问题讨论】:
标签: javascript html input numbers
我猜你需要 javascript。没有纯 HTML 解决方案。
【讨论】:
你肯定必须使用脚本......在 html 中没有静态解决方案来检测这种模式......但是
如果您想匹配静态或动态字符串模式,那么在 html 中,您可以选择对某些正则表达式模式使用 'pattern' 属性.. 例如...
您可以使用<input type=text pattern='^\d\d/\d\d/\d\d\d\d$' >(只是为了解释,尽管它会接受 99/99/9999 作为不正确的日期)。
要强制用户以 dd/MM/yyyy 模式输入日期,您可以在 http://regexone.com... 上了解有关正则表达式的更多信息。
regex代表正则表达式
【讨论】:
我将发布我的 javascript 方法来执行此操作(正如答案所说,纯 HTML 是不可能的)
<input id="koko" type="number" min=1 onchange="applyChange(validate(this))">
<span id='note' hidden><font color=red>Please enter powers of two</font>
</span>
<script>
var saver=1;
function applyChange(num)
{
document.getElementById('koko').value=num;
}
function validate(input)
{
document.getElementById('note').hidden=true;
var number=input.value;
if(Number.isInteger(Math.log2(number)))
return (saver=number);
else
{
document.getElementById('note').hidden=false;
return saver;
}
}
</script>
【讨论】: