2012-02-28 102 views
-1

我需要JavaScript支持服務。這裏是我的問題:如果語句不起作用JavaScript

<script type="text/javascript"> 
    function validateForm() { 
     var ime = document.getElementById('ime'); 
     var prezime = document.getElementById('prezime'); 
     var telefon = document.getElementById('telefon'); 
     var datum = document.getElementById('datum'); 
     var patt1 = /^\+[0-9]+$/; 
     if (telefon.match(patt1) == null) { 
      alert("Niste dobro uneli broj"); 

     } 
     if (ime.value.length == 0 && prezime.value.length == 0 && telefon.value.length == 0 && datum.value.length == 0) { 
      alert("Niste dobro uneli podatke!"); 
      return false; 
     } 

    } 
</script> 
<form action="popup.php" method="post" onsubmit="return validateForm()">Vase ime: 
    <input type="text" name="ime" id="ime"> <br/> 
    Vase prezime: 
    <input type="text" name="prezime" id="prezime"> <br/> 
    Broj telefona: 
    <input type="text" name="telefon" id="telefon"> <br/> 
    Datum rodjenja: 
    <input type="text" name="datum" id="datum"> <br/> 
    <input type="submit" name="save" value="sacuvaj"> 
</form> 

我不明白爲什麼telefon.match(patt1)==null)不起作用。請幫忙!

+0

你應該允許破折號和/或空格在電話號碼?/^ \ + [\ d \ - \ s] + $ /或類似的東西,然後修剪它? – menacingly 2012-02-28 15:45:35

+0

在JavaScript中,您不應該像使用其他語言一樣將開頭的花括號放在新行上 – danwellman 2012-02-28 15:46:03

+0

請參閱http://stackoverflow.com/questions/tagged/regex%20javascript?sort=active&pagesize=50瞭解如何使用示例以更好地問你的問題。具體來說,你的標題應該描述你試圖提出的問題;不應該有不必要的代碼(比如這個HTML),你應該定義你想要你的代碼做什麼,並且(如你所做的)說出你有什麼問題。一般來說,這個問題應該與該網站的未來用戶相關。 – ninjagecko 2012-02-28 15:48:56

回答

3

原因是因爲你不能應用正則表達式來HTML元素,你可以將它應用到它的價值:

var telefon = document.getElementById('telefon').value; 

然後你就可以在VAR電話執行你的正則表達式

0

電話是DOM元素,而不是字符串

telefon.value可以匹配

0

存儲在telefon的對象將是一個DOM元素(例如HTMLDivElement),它沒有方法「匹配」。您需要在匹配之前從該元素中提取相關文本。你如何做將取決於確切的DOM類型:

if (telefon.value.match(patt1) == null) // For form elements... 

if (telefon.innerHTML.match(patt1) == null) // For "plain" DOM elements...