2016-06-08 71 views
0

我的程序在這裏試圖讓用戶輸入一個文本字段,並且如果用戶輸入是一個10位數的數字(數字在開頭或者任何排序計數中都是0)他們按下檢查按鈕,他們將收到一個提醒,說明他們的號碼是什麼,否則他們會收到一條警告,告訴他們輸入正確的號碼。十位數字的正則表達式

但是,只要按下按鈕,沒有任何變化。我相信我的正則表達式和函數中存在一個問題,但是我不確定如何編寫一個正則表達式來搜索表單結果中有10位數字的特定模式。

這裏是我的代碼的相關位。

<form name = submitnumber"> 
    <input type = "text" size = "15" name = "inputnumber"></input> 
    <button type = "button " onclick = "checknumber()">Check</button> 
</form> 
<script type "text/javascript"> 
    function checknumber() { 
    var tendigitnum = /^\d+${10}/; 
    var input_num = document.getElementByName("inputnumber") 
    if (input_num.search(tendigitnum)) { 
     window.alert("You entered: " + input_num); 
    } else { 
     window.alert("Please enter a valid 10 digit number!"); 
    } 
    } 
</script> 
+0

打開您的瀏覽器控制檯(通常F12) - 您的正則表達式無效,應該記錄一個錯誤(第一個幾個)。 –

+2

你的代碼有幾個問題,其中任何一個都會導致失敗。 – 2016-06-08 14:11:27

回答

2

你的正則表達式的語法是錯誤的。

讓它

var tendigitnum = /^\d{10}$/; 

,並用它作爲

tendigitnum.test("2342343434"); //outputs true 

另外,有沒有這樣的方法getElementByName,你需要使用getElementsByName並返回多個元素。做它

var input_num = document.getElementsByName("inputnumber")[0].value; 
+0

也是,當我按下檢查按鈕時,輸入消失並且不顯示警報。 –

+0

@AB您是否嘗試過我提出的更改?\ – gurvinder372

+0

是的,我有,並且當我切換警報的順序時,該程序正常工作! –

1

您需要的正則表達式更改爲一個有效的

var tendigitnum = /^\d{10}$/; 

和元素的值正確的訪問與

document.getElementsByName("inputnumber")[0].value 

,你需要與

進行匹配
if (input_num.match(tendigitnum)) { 
    // 
} 

function checknumber() { 
 
    var tendigitnum = /^\d{10}$/; 
 
    var input_num = document.getElementsByName("inputnumber")[0].value; 
 
    if (input_num.match(tendigitnum)) { 
 
     alert("You entered: " + input_num); 
 
    } else { 
 
     alert("Please enter a valid 10 digit number!"); 
 
    } 
 
}
<form name = submitnumber"> 
 
    <input type="text" size="15" name="inputnumber"></input> 
 
    <button type="button" onclick="checknumber()">Check</button> 
 
</form>