2012-02-08 55 views
1

下面的代碼驗證兩個名稱服務器文本框。正如你可以看到JavaScript代碼中有冗餘。 // validate textbox 1// validate textbox 2。無論如何,我可以只使用一個腳本..你知道我只是想使用1驗證功能來驗證兩個文本框。我很抱歉我的英語,我希望你們都能理解我。謝謝。Javascript驗證兩個文本框

<script type="text/javascript"> 

// validate textbox 1 
    function validate_domain(){ 
     var nameserver1 = document.getElementById('nameserver1').value; 
     var domain_array = nameserver1.split('.'); 

     var domain = domain_array[0]; 
    //This is reguler expresion for domain validation 
     var reg = /^([A-Za-z0-9])+[A-Za-z0-9-]+([A-Za-z0-9])$/; 

    if(domain == ''){ 
     alert("Please enter the domain name"); 
     document.getElementsById('nameserver1').focus(); 
     return false; 
    } 

    if(reg.test(domain) == false){ 
     alert("Invalid character in domain. Only letters, numbers or hyphens are allowed."); 
     document.getElementsById('nameserver1').focus(); 
     return false; 
    } 

    } 



    // validate textbox 2 
    function validate_domain(){ 
     var nameserver1 = document.getElementById('nameserver1').value; 
     var domain_array = nameserver2.split('.'); 

     var domain = domain_array[0]; 
    //This is reguler expresion for domain validation 
     var reg = /^([A-Za-z0-9])+[A-Za-z0-9-]+([A-Za-z0-9])$/; 

    if(domain == ''){ 
     alert("Please enter the domain name"); 
     document.getElementsById('nameserver2').focus(); 
     return false; 
    } 

    if(reg.test(domain) == false){ 
     alert("Invalid character in domain. Only letters, numbers or hyphens are allowed."); 
     document.getElementsById('nameserver2').focus(); 
     return false; 
    } 

    } 
    </script> 

<fieldset class="inlineLabels"> 

      <label for="name">Nameserver 1</label> 
      <input type="text" class="textInput" maxlength="255" size="30" value="" id="nameserver1" name="nameserver1"> 

      <label for="data">Nameserver 2</label> 
      <input type="text" class="textInput" maxlength="255" size="30" value="" id="data" name="nameserver2"> 

     </fieldset> 

      <button onclick="validate_domain(); submitForm('page1','directpage.php');" value="Validate" name="btn_validate" type="button" class="positive iconstxt icoPositive"><span>Save</span></button> 
+0

好吧,我想我現在終於搞定了我的答案,應該準備好了。 – 2012-02-08 19:06:27

+0

我非常感謝大家的幫助,但是對於我來說沒有任何提供的代碼功能完全可用。再次感謝。 – sg552 2012-02-08 19:45:49

+0

增加了一個工作小提琴。 – pete 2012-02-09 04:55:10

回答

1

那麼這裏是另一種方法:

function ValidateDomain(){ 
    function CheckForBlank(domain, textBox){ 
     if(domain == ''){ 
      alert("Please enter the domain name"); 
      document.getElementsById('nameserver1').focus(); 
      return false; 
     } 
    } 
    function CheckForFormat(domain, textBox){ 
     if(reg.test(domain) == false){ 
      alert("Invalid character in domain. Only letters, numbers or hyphens are allowed."); 
      document.getElementsById('nameserver1').focus(); 
      return false; 
     } 
    } 
    function GetDomainName(inputId){ 
     var serverName = document.getElementById(inputId).value, 
      domain_array = serverName.split('.'); 

     return domain_array[0]; 
    } 
    var nameserver1 = GetDomainName('nameserver1'), 
     nameserver2 = GetDomainName('nameserver2'), 
     nameServerInput1 = document.getElementsById('nameserver1'); 
     nameServerInput2 = document.getElementsById('nameserver2'); 

    if (CheckForFormat(nameserver1,nameServerInput1) && CheckForBlank(nameserver1,nameServerInput1) 
     && CheckForFormat(nameserver2,nameServerInput2) && CheckForBlank(nameserver2,nameServerInput2)){ 
     //This means you are valid 
     return { 
      name1:nameserver1, 
      name2:nameserver2 
     } 
    } 
    return false; 
} 
+0

我粘貼你的腳本,然後單擊空白按鈕,alertbox出現,但是當我用數據填充文本框時,變量未提交到目標頁面:( – sg552 2012-02-08 19:44:07

+0

)您不能複製和粘貼我寫的內容。'//這意味着你是有效的',你必須做你需要這個函數來做的事情。 '看看我的更新的答案。 – arb 2012-02-08 19:57:57

+0

它的工作。謝謝:) – sg552 2012-02-09 08:27:22

1

也許是這樣的:

<script type="text/javascript"> 

function validate_domain(){ 

      validateTextBox('nameserver1'); 
      validateTextBox('nameserver2'); 
} 

     function validateTextBox(tbName){ 

       var nameserver1 = document.getElementById(tbName).value; 
       var domain_array = nameserver1.split('.'); 

       var domain = domain_array[0]; 
      //This is reguler expresion for domain validation 
       var reg = /^([A-Za-z0-9])+[A-Za-z0-9-]+([A-Za-z0-9])$/; 

      if(domain == ''){ 
       alert("Please enter the domain name"); 
       document.getElementsById(tbName).focus(); 
       return false; 
      } 

      if(reg.test(domain) == false){ 
       alert("Invalid character in domain. Only letters, numbers or hyphens are allowed."); 
       document.getElementsById(tbName).focus(); 
       return false; 
      } 

      } 

     } 
      </script> 
+0

我貼你的腳本,然後單擊空按鈕,可惜沒alertbox出現:( – sg552 2012-02-08 19:42:11

+0

做的代碼在你的問題的工作? – 2012-02-08 19:47:50

+0

上面的原始代碼工作。我感謝您的幫助:) – sg552 2012-02-09 14:59:23

0

帶你想驗證作爲函數的參數元素的ID。

// validate textbox 
function validate_domain(serverName){ 
    var server = document.getElementById(serverName).value; 
    var domain_array = server.split('.'); 

    var domain = domain_array[0]; 
//This is reguler expresion for domain validation 
    var reg = /^([A-Za-z0-9])+[A-Za-z0-9-]+([A-Za-z0-9])$/; 

if(domain == ''){ 
    alert("Please enter the domain name"); 
    document.getElementsById(serverName).focus(); 
    return false; 
} 

if(reg.test(domain) == false){ 
    alert("Invalid character in domain. Only letters, numbers or hyphens are allowed."); 
    document.getElementsById(serverName).focus(); 
    return false; 
} 

} 
+0

我太慢了!吉茲MIKEY – Justin 2012-02-08 19:07:13

+0

我貼你的腳本,然後單擊空按鈕,可惜沒alertbox出現:( – sg552 2012-02-08 19:42:22

0
<script type="text/javascript"> 

// validate textbox 
    function validate_domain(ele){ 
     var nameserver = ele.value; 
     var domain_array = nameserver.split('.'); 

     var domain = domain_array[0]; 
    //This is reguler expresion for domain validation 
     var reg = /^([A-Za-z0-9])+[A-Za-z0-9-]+([A-Za-z0-9])$/; 

    if(domain == ''){ 
     alert("Please enter the domain name"); 
     ele.focus(); 
     return false; 
    } 

    if(reg.test(domain) == false){ 
     alert("Invalid character in domain. Only letters, numbers or hyphens are allowed."); 
     ele.focus(); 
     return false; 
    } 

    } 
    </script> 

<fieldset class="inlineLabels"> 

      <label for="name">Nameserver 1</label> 
      <input type="text" class="textInput" maxlength="255" size="30" value="" id="nameserver1" name="nameserver1"> 

      <label for="data">Nameserver 2</label> 
      <input type="text" class="textInput" maxlength="255" size="30" value="" id="data" name="nameserver2"> 

     </fieldset> 

      <button onclick="validate_domain(document.getElementById('nameserver1')); validate_domain(document.getElementById('nameserver2')); submitForm('page1','directpage.php');" value="Validate" name="btn_validate" type="button" class="positive iconstxt icoPositive"><span>Save</span></button> 
+0

我貼你的腳本,然後單擊空按鈕,alertbox出現,但是當我用數據填充文本框的變量沒有被提交到目標頁面:( – sg552 2012-02-08 19:43:53

+0

好,它必須是你的submitForm函數......否則,你可以創建一個表單(實際上會更好),並向它添加'onsubmit =「if(!validate_domain(document.getElementById('nameserver1'))||! validate_domain(的document.getElementById( '域名服務器2'))){返回false;} 「'' – Nabab 2012-02-08 21:07:41

+0

<形成的onsubmit =」 如果|| validate_domain(的document.getElementById(」(validate_domain(的document.getElementById( 'NAMESERVER1')!)! nameserver2'))){return false;}「method =」post「action =」dns/dns_ns_wizard_pros.php「> \t '這可以嗎? – sg552 2012-02-09 08:32:26

1

看到這一個工作。在家玩。這是一個工作jsFiddle。是的,這太複雜了,但我討厭alert('annoying pop-up');

我評論了源代碼,所以你會更好地理解爲什麼我這樣寫。

sg522:它可能不會複製/粘貼到您的代碼工作,但我不知道你的代碼的其餘部分是什麼。我們也不是在這裏爲你寫代碼。我們在這裏幫助您學習併成爲更有經驗的程序員。

如果您有任何問題,請讓我們知道。

快樂編碼!

更新:修改jsFiddle與Opera和Firefox 10配合使用。 Opera或Firefox顯然不允許cloneNode現在不帶參數調用。 Opera顯然也不允許鏈接變量聲明。

+0

如果我理解正確,我會看到'

'中的輸出正確嗎?我在jsFiddle上用空輸入測試代碼,它不起作用? – sg552 2012-02-09 08:52:51

+0

你理解正確。它適用於Google Chrome瀏覽器。你用什麼瀏覽器來測試它? – pete 2012-02-09 11:51:06

+0

事實證明,它不適用於Opera 11.61和Firefox 10.0,但適用於IE 9.0和Safari 5.1。無論如何,你可以使它跨瀏覽器兼容? – sg552 2012-02-09 14:36:41