2
我有一個JavaScript函數,以確保用戶只有類型數字。
我用onkeypress="return onlyNumbers(event, 'MaxRate', 1300, 62500);"
應用onkeypress後獲取字段值
function onlyNumbers(evt, id, value, maxRange)
{
var e = event || evt; // for trans-browser compatibility
var charCode = e.which || e.keyCode;
var answer = false;
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
// if user provided id
if(id)
{
// we obtain the new value
var newValue = ((document.getElementById(id).value) + String.fromCharCode(charCode));
// we check for range limits
if(maxRange && newValue > maxRange)
{
return false;
}
// we check to see if value has changed, therefore we will highlight text
if(value)
{
highlight_text_on_change(id, value, newValue);
}
}
return true;
}
function highlight_text_on_change(id, value, newValue)
{
if(newValue)
{
if(newValue == value)
{
document.getElementById(id+'_name').style.color = '';
}
else
{
document.getElementById(id+'_name').style.color = 'red';
}
}
else
{
if(document.getElementById(id).value == value)
{
alert("UnHighlighting text");
document.getElementById(id+'_name').style.color = '';
}
else
{
alert("Highlighting text");
document.getElementById(id+'_name').style.color = 'red';
}
}
return true;
}
的功能首先是驗證檢查,看看用戶是否按下數字鍵,然後如果數字鍵的值已經改變,那麼文本有叫它id+'name'
將文本顏色更改爲紅色,表示它已更改。我唯一的問題是,假設文本字段的默認值是1300,如果用戶鍵入6,則值更改爲13006或13060或13600或16300或61300並且字段高亮顯示,但如果用戶之後按退格鍵,則該字段不會高亮顯示,因爲退格操作不會正確註冊。有沒有什麼辦法,我可以知道確切地說,用戶按下退格鍵,或者在不檢查文本字段的情況下獲得新形成的值,直到我檢查到新值有效?
這使得它更加古怪:按後的數據被註冊到領域,也算退格
測試這裏的關鍵,但後
KeyUp事件將被解僱。現在連字母都會被接受。但謝謝你的jsfiddle,我將在那裏練習 – Quillion
數字過濾器必須在onkeydown,然後做一個返回false如果NaN –
謝謝幫助我。讓我永遠得到這個權利。 – Squirrl