[英]javascript how to prevent from mulitiple dots in input field
I'm trying to develop functionality for input
generated by jsf. 我正在尝试为jsf生成的
input
开发功能。 I already have javascript code that uses the onkeypressed
to prevent putting non-numeric values by user: 我已经有使用
onkeypressed
防止用户输入非数字值的javascript代码:
function validateNumberKey(event){
return (45<event.charCode && event.charCode<58 && event.shiftKey==false && DotTracker().prototype.wasPressed())
|| (event.keyCode==8) || (event.keyCode==9)
}
the code that findsout if user pressed dot is here: 查找用户是否按了点的代码在这里:
function DotTracker() {
var dotPressed = false;
this.wasPressed = function() {
var currentDot = dotPressed;
dotPressed = true;
return currentDot;
};
}
And simplified input
reference: 并简化了
input
参考:
<input type="text" id="inpurCP" onfocus="new DotTracker()" onkeypressed="validateNumberKey(event)"/>
I'm pretty sure that something goes wrong with calling wasPressed()
method. 我很确定调用
wasPressed()
方法出问题了。 But I'm not quite familiar with javascript
though... 但是我对
javascript
不太熟悉...
Ok I solve the problem. 好的,我解决了问题。 Instead of using
DotTracker()
. 而不是使用
DotTracker()
。 I created another function: 我创建了另一个函数:
function wasDotPressed(event) {
var index = -1;
if(event.charCode == 46) {
var currentValue = event.currentTarget.value;
index = currentValue.indexOf('.');
}
return index == -1;
}
and add the relevant line of code to the validateNumberKey(event)
: 并将相关代码行添加到
validateNumberKey(event)
:
function validateNumberKey(event){
return (45<event.charCode && event.charCode<58 && event.shiftKey==false && wasDotPressed(event))
|| (event.keyCode==8) || (event.keyCode==9)
}
And finally it works :). 最后,它可以工作:)。 Hope that it help anyone that is struggling such problem.
希望它对任何正在解决此类问题的人有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.