2013-04-08 44 views
4

我有一個問題,試圖檢查文本框是否僅包含使用JavaScript的a-z 0-9值。檢查文本框是否包含無效字符

我有我的頁面上的文本框:

<input type="text" id="first_name" class="first_name" value=""> 

我使用下面的JavaScript函數來檢查我的文本框:

// Function to check letters and numbers 
function alphanumeric(inputtxt) 
{ 
//alert(inputtxt); 
var letters = "/^[0-9a-zA-Z]+$/"; 
if(inputtxt.value.match(letters)) 
{ 
alert('accepted'); 
} 
else 
{ 
alert('Please input alphanumeric characters only'); 
return false; 
} 
} 

而且我打電話給我的功能是這樣的:

var test = alphanumeric(document.getElementById("first_name").value); 

然而沒有任何事情發生。

如果我在我的字母數字函數中提醒'inputtxt',它會返回我在我的文本框中的值,所以我知道有一個值需要檢查,但似乎並沒有從那裏繼續。

有誰知道我哪裏出了問題?

我想用JavaScript(jQuery的無)做到這一點。

回答

3

您正在使用.value兩次:

document.getElementById("first_name").value 

if(inputtxt.value.match(letters))

刪除其中之一。

12

的幾個問題:

  • 壞形式爲regular expression literal(不要使用他們的報價)
  • 使用match代替test(不是一個錯誤,但不是最有效的)
  • 您使用inputtxt.valueinputtxt尚未值
  • 你永遠不返回true

您可以使用此:

function alphanumeric(inputtxt) { 
    var letters = /^[0-9a-zA-Z]+$/; 
    if (letters.test(inputtxt)) { 
    alert('accepted'); 
    return true; 
    } else { 
    alert('Please input alphanumeric characters only'); 
    return false; 
    } 
} 
0

您正在使用value兩次:

alphanumeric(document.getElementById("first_name").value); 

if(inputtxt.value.match(letters)) 

這基本上展開到

if(document.getElementById("first_name").value.value.match(letters)) 

這是沒有意義的,因爲String對象value沒有屬性value,而undefined實體[...]value.value沒有屬性match()(調試控制檯應該儘可能多地告訴你)。

enter code here變種測試=字母數字(的document.getElementById( 「如first_name」));