2012-06-20 235 views
3

我想驗證預先配置的數字範圍內的輸入字段。 只允許從1到24的數字。Javascript/jquery:驗證輸入的數字範圍

我該怎麼辦?


有了這樣的定製解決方案:

$('.field').keypress(function(event) { 
     var val = parseInt($(this).val()) + HERE_I_SHOULD_SUM_THE_NEWLY_ADDED_DIGIT; 
     if(val < 1 || val > 24) event.preventDefault(); 
    }); 

我能夠檢索當前的輸入值。 如何添加新添加的數字?

回答

9

如何回合像這樣?

​$("input").on("change", function() { 
    var val = Math.abs(parseInt(this.value, 10) || 1); 
    this.value = val > 25 ? 24 : val; 
});​​​​​​​​​​​​​ 

DEMO:http://jsfiddle.net/3jw4S/

+0

對不起,但不起作用。 –

+1

@MichDart你是什麼意思*不起作用*?你有沒有檢查演示?你認爲'change'事件只在輸入元素失去焦點時才運行?如果您需要立即反應,請嘗試'keyup'事件:http://jsfiddle.net/3jw4S/1/。 – VisioN

+0

是的,它在輸入失去焦點時起作用。是否有可能改變這種行爲來處理按鍵事件?謝謝 –

1

還有的jQuery插件,可以幫助你與驗證稱爲Valid8:

http://unwrongest.com/projects/valid8/

您將需要使用正則表達式,比如這一個:

^([1-9]|[1]?[1-9]?|[2][0-4]|10)$ 
+0

這不會對1-9的工作,10 ,或15-20。 – Graham

+0

而你的編輯只適用於1,2或4 ... – Graham

+0

這是0真的...對不起;) – Graham

0
function validateForm() 
{ 
var x=document.forms["myForm"]["fname"].value; 
if (x==null || x <1|| x >24) 
    { 
    alert("Value must be between 1 & 24"); 
    return false; 
    } 
} 

沿着這些線應該工作

+0

工作正常。 gr8 –

+0

我無法提交表格。我正在與阿賈克斯合作。在輸入插入期間是否可以檢查驗證? –

0

試試這個

function validate() { 
var x = parseInt(value,10) // its the value from the input box; 
if(isNaN(x)||x<1||x>24) 
{ 
    alert("Value must be between 1 and 24"); 
    return false; 
    } 
} 
2

有內置的功能在現代瀏覽器中輸入:

一個全面的概述可以在這裏找到:http://www.the-art-of-web.com/html/html5-form-validation/

基本上,你可以寫:

<input type="number" min="1" max="24" step="1" required> 

與圖案,你可以定義正則表達式來測試針對:

pattern="\d[0-3]" 

Example

+0

我知道,但我需要一些回退 –

+0

@MichDart然後定義這些屬性,並用JavaScript評估它們,如果瀏覽器無法處理它。這是最好的解決方案。 – Christoph

+0

@MichDart我更新了小提琴,這應該是與medern瀏覽器兼容的方式,而不會遺留舊的。 – Christoph