2012-02-08 67 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