2014-07-15 76 views
-1
function validateInput(evt) 
{ 
     var e = window.event || evt; 
     if (e.keyCode > 31 && (e.keyCode < 48 || e.keyCode > 57)) 
     { 
     document.getElementById('mno').value=""; 
     document.getElementById('mno').style.backgoundColor="yellow"; 
     return false; 
     } 
     document.getElementById('mno').style.backgoundColor="white"; 
     return true; 
    } 

//輸入移動字段驗證的代碼。它不適用於移動設備。 //編輯:只使用javascript |請勿使用jquery /別人的腳本!!!如何在JavaScript中驗證移動設備中的手機號碼?

+0

這不是一個好方法。你應該驗證整個文本。反正我不明白你爲什麼把那個'e.keyCode> 31' – Alireza

+0

是的,你是對的朋友。我想要你的建議。什麼是解決這個問題的最好方法? – user2677600

回答

0

這是使用jQuery的出發點,以您的問題:

$("#mno").on("keypress",function(evt){ 
    validateInput(evt); 
}); 



function validateInput(evt) 
{ 
    var e = window.event || evt; 
    if (e.keyCode > 31 && (e.keyCode < 48 || e.keyCode > 57)) 
    { 
    $('#mno').val(""); 
    $('#mno').css({"backgroundColor":"yellow"}); 
    return false; 
    } 
    $('#mno').css({"backgroundColor":"white"}); 
    return true; 
} 

http://jsfiddle.net/Jyvt9/

當然這僅限於管理只數輸入,不包括手機號碼驗證

+0

示例代碼不完全正確。它包含'單個值與錯誤的輸入。對於錯誤的輸入,它應該是空白/ null。 – user2677600

1

更好方式是使用正則表達式:

function validateInput(evt) 
{ 
     var pattern = /^[\s()+-]*([0-9][\s()+-]*){6,20}$/; 
     var e = window.event || evt; 
     if (pattern.match(e.keycode)) 
     { 
     document.getElementById('mno').value=""; 
     document.getElementById('mno').style.backgoundColor="yellow"; 
     return false; 
     } 
     document.getElementById('mno').style.backgoundColor="white"; 
     return true; 
    } 

編輯:

你問了一個更好的方法。更好的方法是將keypress事件附加到您的文本字段並對整個字符串執行驗證,而不是逐字符驗證。

+0

我打算提出這個建議。由您決定先生 – Alireza

+0

錯誤:第5行「如果cond未關閉」 javascript也區分大小寫。 它通過的未捕獲的類型錯誤:未定義是不使用以下代碼的函數 :

user2677600

+0

那是未封閉的,因爲圓括號更改爲'if(pattern.match(e.keycode))' – Alireza

0

首先,固定你的函數:

function validateInput(evt) 
{ 
    var e = window.event || evt; 
    if (e.charCode< 48 || e.charCode> 57) 
    { 
    document.getElementById('mno').value=""; 
    document.getElementById('mno').style.backgoundColor="yellow"; 
    return false; 
    } 
    document.getElementById('mno').style.backgoundColor="white"; 
    return true; 
} 

這僅僅是爲修復自己擁有什麼。

+0

ok.ping me,如果您找到解決方案。這些事件甚至可以使用JavaScript嗎?我不確定JavaScript執行此任務。原因是移動設備具有鍵盤類型的觸摸/鍵盤類型,並且單鍵被用於鍵盤類型移動設備中的各種鍵事件。 – user2677600

0
<script type="text/javascript"> 

function validateInput(evt) 
{ 
    var e = window.event || evt; 
    if (e.charCode< 48 || e.charCode> 57) 
    { 
    document.getElementById('mno').value=""; 
    document.getElementById('mno').style.backgoundColor="yellow"; 
    return false; 
    } 
    document.getElementById('mno').style.backgoundColor="white"; 
    return true; 
} 

</script> 
<!-- 
<html> 
<body> 
<form> 
<input type="tel" onkeypress="return validateInput(this)" id="mno" pattern="[0-9]{10}" maxlength="10" minlength="10"/> 
</form> 
</body> 
</html> 

此代碼將適用於所有移動設備。謝謝你的回覆。