如何使用正则表达式验证jquery中的文本框?

时间:2014-04-26 03:51:59

标签: jquery html regex

这个问题似乎与某人重复,但事实并非如此。剧本工作得很好,直到今天早上,但它现在有点奇怪。我已经尝试了许多建议的方法来更改代码,比如删除else部分并使用if!=“true”检查条件,但没有运气。

jquery的

$("#controlButton").click(function () {

    var SHPname = $("#fname").val();
    var textfieldmask = /^[a-z\.\s-]{2,}$/;
    /// check full name 
    if (SHPname.length > 0) {
        var testname = textfieldmask.test(SHPname);
        alert(testname);
        if (testname == "true") {
            var tstnm = "ok";
            alert(tstnm);
        } else {
            alert("Enter the full name!");
            $('#fname').focus();
            return false;
        }
    } else {
        alert("Please enter the name");
        $('#fname').focus();
        return true;
    }
});

HTML

<label class="required" for="name" title="Enter your name">
    <input type="text" id="fname" name="fname" />Reciver's name</label>
<label for="formsubmit" class="nocontent">
    <a id="controlButton" href="#" class="progress-button">
        <p id="BTNtxt">Save</p>
        <img id="loadergif" src="../images/loader-cat.gif" width="30" height="14"  alt=""/>
    </a>
    <strong>Note:</strong> 
    Items marked 
    <img src="images/required.gif" alt="Required marker" width="12" height="12" /> 
    are required fields
</label>

奇怪的部分是,我有第一个警告“真”但代码运行!=“true”和警报输入全名!
为什么会这样?请帮帮我。

3 个答案:

答案 0 :(得分:0)

在这里,使用您正在执行的testname RegExp.prototype.test()

  

test()方法执行搜索正则表达式和指定字符串之间的匹配。返回true或false。

在您的代码段中,您正在比较true === "true"。这总是失败。所以你应该使用if (testname === true )if (testname)(作为它的布尔值)

答案 1 :(得分:0)

试试这个。在jsFiddle工作。保留testname == true但不包含""

 $("#controlButton").click(function () {

     var SHPname = $("#fname").val();
     var textfieldmask = /^[a-z\.\s-]{2,}$/;
     /// check full name 
     if (SHPname.length > 0) {
         var testname = textfieldmask.test(SHPname);
         alert(testname);
         if (testname == true) {
             var tstnm = "ok";
             alert(tstnm);
         } else {
             alert("Enter the full name!");
             $('#fname').focus();
            // return false;  Do you get this return anywhere somehow? if not you don't need it
         }
     } else {
         alert("Please enter the name");
         $('#fname').focus();
         //return true; Same here
     }
 });

答案 2 :(得分:0)

此处正在运作jsfiddle

HTML:

<label class="required" for="name" title="Enter your name">
 <input type="text" id="fname" name="fname" />Reciver's name</label>
 <label for="formsubmit" class="nocontent">
  <a id="controlButton" href="#" class="progress-button">
    <p id="BTNtxt">Save</p>
    <img id="loadergif" src="../images/loader-cat.gif" width="30" height="14"  alt=""/>
  </a>
  <strong>Note:</strong> 
     Items marked 
    <img src="images/required.gif" alt="Required marker" width="12" height="12" /> 
    are required fields
  </label>

JAVASCRIPT:

  $("#controlButton").click(function() {

   var SHPname = $("#fname").val();
   var textfieldmask =  /^[a-z\.\s-]{2,}$/;
    /// check full name 
       if (SHPname.length > 0){
            var testname = textfieldmask.test(SHPname);
     alert (testname);
               if (testname == true ){
                  var tstnm = "ok";
      alert (tstnm);
               } else {
                  alert ("Enter the full name!");
      $('#fname').focus();  
                 return false;
              }       
            } else {
    alert ("Please enter the name");
     $('#fname').focus();  
                 return true;
        }  
  });

<强>更新: 这是您的小提琴更新,以验证两个文本框jsfiddle