2013-09-23 14 views
3

我有一個文本框,我想用關鍵事件如何使用關鍵事件的最大值限制文本框值?

我嘗試用下面的代碼和它的做工精細

function validateRange(ele) {  
    if(ele.val() < 0 || ele.val() > 100){ 
     console.log('false'); 
    }else{ 
     console.log('true'); 
    } 
} 
$('.digit-validation').keyup(function(event){ 
    validateRange($(this)); 
}); 

HTML限制爲最高值,該值:

<form:input type="text" path="depth" cssClass="number inplace-textbox digit-validation" data-min="0" size="10" /> 

我想要if(ele.val() < 0 || ele.val() > 100)停止按鍵。

更新:我試圖做值的驗證範圍。

+0

你想*停止*輸入文本,如果他們*有沒有足夠的人進入*的文本?或者我誤解了「data-min」下界的使用? –

+5

任何不使用'maxlength'屬性的原因? – Harry

+0

它可以與(例如.99.99)一起使用,所以我不能和maxlength一起使用。 –

回答

2

我建議你嘗試使用HTML5 inputnumber,與minmax屬性:

<input type="number" min="0" max="100" /> 

JS Fiddle demo

這允許用戶直接輸入一個數字(使用鍵盤或複製/粘貼),並允許使用step屬性控制增量(例如,step="2",將允許增加或減少2每次點擊微調箭頭)。

但是,如果你必須使用非數字input

Number.prototype.between = function (a, b, inclusive) { 
    var min = Math.min.apply(Math, [a,b]), 
     max = Math.max.apply(Math, [a,b]); 
    return inclusive ? this >= min && this <= max : this > min && this < max; 
}; 

$('.digit-validation').keydown(function(event){ 
    var v = parseFloat(this.value + String.fromCharCode(event.which)); 
    return parseFloat(v).between(0,100,true); 
}); 

JS Fiddle demo

2

你爲什麼不使用maxlength HTML屬性?

<input type="text" maxlength="100" /> 

有沒有必要使用JS來實現這一點。

+0

如果我輸入(99.99),maxlength無法控制。 –

+0

@哈里:我正在嘗試做值範圍驗證。 –

1

爲了您的驗證,你需要兩件事情:

  1. 檢查,如果用戶如果用戶輸入的東西進入了一些
  2. 檢查

    對於第一次一個介於0和100

,既然你使用jQuery,你可以使用 $.isNumeric()。 對於第二個,您需要將值解析爲整數,由於 parseInt()

這將使你:

http://jsfiddle.net/tLwYX/

function validateRange(ele) {  
    var val = ele.val(); 
    if(!$.isNumeric(val) || parseInt(val,10) < 0 || parseInt(val,10) > 100){ 
     $('#result').html('false'); 
    }else{ 
     $('#result').html('true'); 
    } 
} 
$('.digit-validation').keyup(function(event){ 
    validateRange($(this)); 
}); 
+3

parseFloat。他也可以使用小數。 –

+0

@RoyiNamir你是對的,它會更精確。儘管如此,它也可以使用'99.99'和'parseInt',因爲它給出了'99'。 – Shikiryu