如何在按键期间javascript中只允许一个“.”?我这里有一个代码:
function allowOneDot(txt) { if ((txt.value.split(".").length) > 1) { //here, It will return false; if the user type another "." } }
w9apscun1#
我 会 重申 我 在 答复 前 的 评论 :如果 用户 在 控制 台 中 编辑 javascript 而 完全 忽略 了 这个 检查 呢 ? 确保 你 正确 地 处理 了 验证 , 而 不是 做 了 太 多 的 简化 。现在 我们 要 自己 承担 风险 , 下面 是 如何 禁止 用户 在 文本 框 中 键入 多 个 . ( 句点 ) :
.
document.getElementById('yourTextboxIDHere').onkeypress = function (e) { // 46 is the keypress keyCode for period // http://www.asquare.net/javascript/tests/KeyCode.html if (e.keyCode === 46 && this.value.split('.').length === 2) { return false; } }
中 的 每 一 个Working demo 的 最 大 值
wfauudbj2#
如果你真的想允许一个点,即使用户在其中粘贴文本,你应该使用keyup,而不是keypress,你可以保留你最后的文本值,以防你需要恢复它。但缺点是,输入的值已经被更改,你会看到它被纠正,因为你键入。
(function() { var txt = document.getElementById('txt'); var prevValue = txt.value; function allowOneDot(e) { var dots = 0; var length = txt.value.length; var text = txt.value; for(var i=0; i<length; i++) { if(text[i]=='.') dots++; if(dots>1) { txt.value = prevValue; return false; } } prevValue = text; return true; } txt.onkeyup = allowOneDot; })();
cnwbcb6i3#
在这里,我解决了这个问题的多用途的十进制,数字和alfanumeric。l是允许的字符串长度。对于小数,l是允许的小数位。第一个
atmip9wb4#
<input type="text" id="test" onkeyup="floatOnly(this);"/> <script> function floatOnly(i){ { if ((i.value).length > 0){else{i.value = i.value.replace(".." , ".");i.value = i.value.replace("..." , ".");i.value = i.value.replace(/[^0-9\.]/g , "");}}else{i.value = i.value="0";}}<script>
4条答案
按热度按时间w9apscun1#
我 会 重申 我 在 答复 前 的 评论 :
如果 用户 在 控制 台 中 编辑 javascript 而 完全 忽略 了 这个 检查 呢 ? 确保 你 正确 地 处理 了 验证 , 而 不是 做 了 太 多 的 简化 。
现在 我们 要 自己 承担 风险 , 下面 是 如何 禁止 用户 在 文本 框 中 键入 多 个
.
( 句点 ) :中 的 每 一 个
Working demo 的 最 大 值
wfauudbj2#
如果你真的想允许一个点,即使用户在其中粘贴文本,你应该使用keyup,而不是keypress,你可以保留你最后的文本值,以防你需要恢复它。但缺点是,输入的值已经被更改,你会看到它被纠正,因为你键入。
cnwbcb6i3#
在这里,我解决了这个问题的多用途的十进制,数字和alfanumeric。
l是允许的字符串长度。
对于小数,l是允许的小数位。
第一个
atmip9wb4#