2014-09-22 50 views
0

我正在嘗試爲jsf生成的input開發功能。我已經有一個使用onkeypressed,以防止用戶把非數字值的JavaScript代碼:javascript如何防止輸入字段中的多個點

function validateNumberKey(event){ 
    return (45<event.charCode && event.charCode<58 && event.shiftKey==false && DotTracker().prototype.wasPressed()) 
    || (event.keyCode==8) || (event.keyCode==9) 
} 

是findsout如果用戶按下點是這裏的代碼:

function DotTracker() { 
    var dotPressed = false; 
    this.wasPressed = function() { 
     var currentDot = dotPressed; 
     dotPressed = true; 
     return currentDot; 
    }; 

} 

和簡化input參考:

<input type="text" id="inpurCP" onfocus="new DotTracker()" onkeypressed="validateNumberKey(event)"/>

我敢肯定出問題時調用wasPressed()方法。但我不熟悉javascript雖然...

回答

0

好吧我解決了這個問題。而不是使用DotTracker()。我創造了另一個功能:

function wasDotPressed(event) { 
    var index = -1; 
    if(event.charCode == 46) { 
     var currentValue = event.currentTarget.value; 
     index = currentValue.indexOf('.'); 
    } 
    return index == -1; 
} 

和代碼中的相關行添加到validateNumberKey(event)

function validateNumberKey(event){ 
    return (45<event.charCode && event.charCode<58 && event.shiftKey==false && wasDotPressed(event)) 
    || (event.keyCode==8) || (event.keyCode==9) 
} 

最後工程:)。希望它能幫助任何正在努力解決這個問題的人。

相關問題