2014-07-10 92 views
1

我在尋找一個javascript函數,當使用onblur時,它驗證文本輸入是一個只有沒有小數點或特殊字符的數字。我已經能夠找到一些東西,但迄今爲止他們都沒有工作。使用Javascript來檢查輸入值

下面是我對輸入字段:

<tr> 
<td width="312"><strong>Cash on Hand</strong></td> 
<td width="188">$ 
    <input type="text" onchange="updateassets()" value="0" maxlength="11" name="CashOnHand" /></td> 

任何幫助將不勝感激。

+0

的onblur = 「updateassets()」 不工作? –

回答

1

以下方法onKeyUp事件使用,這將只允許在輸入字段中的任何字符

function numericOnly(e) 
{ 
    var val = e.value.replace(/[^\d]/g, ""); 
    if(val != e.value) 
     e.value = val; 
} 

輸入字段代碼

<input type="text" onchange="updateassets()" onKeyUp="numericOnly(this)" value="0" maxlength="11" name="CashOnHand" /> 
+1

自動編輯用戶輸入非常煩人,並且鍵入不會捕獲使用菜單粘貼或拖動到該字段的文本。使用'/\D/.test(e.value)'來確定該值是否有效可能會更簡單。 :-) – RobG

+0

不錯,趕緊記住關於菜單粘貼的內容,否則它會和鍵盤配合使用 –

0

HTML

<form> 
<input type="text" id="txt" /> 
</form> 

JS

(function(a) { 
a.onkeypress = function(e) { 
    if (e.keyCode >= 49 && e.keyCode <= 57) {} 
    else { 
     if (e.keyCode >= 97 && e.keyCode <= 122) { 
      alert('Error'); 
      // return false; 
     } else return false; 
    } 
}; 
})($('txt')); 

function $(id) { 
return document.getElementById(id); 
} 

希望它可以幫助你

+0

如果用戶使用上下文菜單粘貼一個值,那麼怎麼辦?按鍵事件不會被分派。 – RobG

0

考慮:

<input onchange="updateassets()" value="0" ...> 

可以使生活更輕鬆使用傳遞一個參考要素的功能:

<input onchange="updateassets(this)" value="0" ...> 

並且驗證功能可以是:

function validateIsInteger(element) { 

    if (/\D/.test(element.value)) { 

    // the element value contains non–digit values 

    } else { 

    // the element value is only digits 

    } 
} 

使用變化事件是一個好主意,因爲如果該值沒有改變,你不需要檢查它。

0

我喜歡從函數(JS)中分離結構(HTML)。這就是爲什麼input元素中沒有「onchange」屬性的原因。

HTML

<input type="number" name="cashOnHand" value="0" maxlength="11" /> 

JS

function checkInputInteger() { 
     // Check if the input value is an integer 
     if (this.value == parseInt(this.value)) { 
      // The value is an integer 
      console.log('Input ' + this.name + ' is an integer'); 
     } 
     else { 
      // The value is not an integer 
      console.log('Input ' + this.name + ' is not an integer'); 
     } 
    } 

    // Get the input from DOM (getElementsByName returns a list) 
    input = document.getElementsByName('cashOnHand')[0]; 
    // Bind the blur event to checkInputInteger 
    input.addEventListener('blur', checkInputInteger, false); 
相關問題