1

我如何从 jquery 验证中传递一个值。我有一个名为 clubCardNumber 的输入框,它应该验证输入值的长度。如果长度等于 10,则该值传递给名为 else 的隐藏字段,如果其为 null,则对其进行验证,如果所有验证为真,则为空,则其为 clubCard。

这是我在 Javascript 上实现它的方式

 function validateClubCardNumber() {

    var varClubCardNumber = $('#clubCardNumber').val();     
    $('#phoneNumber').val("");
    var returnVal = true;

    if ((null == varClubCardNumber || '' == trim(varClubCardNumber)){
        return false;
    }
    if( varClubCardNumber.length < 10 ){
            return false;

    }else if( varClubCardNumber.length == 10 )  {
        //The Phone Number field should contains numbers only
        var pattern  = /^[0-9 -]*$/ ;
        var flag = pattern.test(trim(varClubCardNumber));
        if(flag == false){
            return false;
        }else{
            $('#phoneNumber').val(varClubCardNumber);
            returnVal = true;
        }
    }

    }
    return returnVal;
 }

HTML

<div >
   <label for="clubCardNumber" >Card or Phone Number:</label>
   <input id="clubCardNumber" name="clubCardNumber" type="text" placeholder="Card or Phone Number" value="" maxlength="20"/>
</div>
<input type="hidden" id="phoneNumber" name="phoneNumber" value=""/> 
4

3 回答 3

0

看来你离得不远了。取自 Rohan 的帖子并进行更多清理,这就是我想出的解决方案

function validateClubCardNumber() {
  var CARD_NUMBER_REGEX = /^[\d-\ ]+$/;
  var varClubCardNumber = $.trim($('#clubCardNumber').val());
  $('#phoneNumber').val("");
  if( varClubCardNumber && 
     (varClubCardNumber.length === 10) &&
     CARD_NUMBER_REGEX.test(varClubCardNumber)) {
       $('#phoneNumber').val(varClubCardNumber);
       return true;
  }
  return false;
}

我注意到,唯一需要检查验证(使用正则表达式)的时间是长度是否正确,所以我尝试简单地代替 if elsif else 结构。

于 2013-11-07T16:38:09.210 回答
0

更改代码

if ((null == varClubCardNumber || '' == trim(varClubCardNumber)){
    return false;
}

经过

if (!$.trim(varClubCardNumber){
    return false;
}

阅读$.trim()

完整代码

function validateClubCardNumber() {
    var varClubCardNumber = $.trim($('#clubCardNumber').val());
    $('#phoneNumber').val("");
    var returnVal = true;    
    if (varClubCardNumber || varClubCardNumber.length < 10){
        returnVal = false;
    }
    else if( varClubCardNumber.length == 10 )  {
        //The Phone Number field should contains numbers only
        var pattern  = /^[0-9-\s]*$/ ;
        var flag = pattern.test(varClubCardNumber);
        if(flag == false){
            returnVal = false;
        }else{
            $('#phoneNumber').val(varClubCardNumber);
        }
    }
    return returnVal;
}
于 2013-11-07T15:51:55.060 回答
0

我在想这是否可行

$("#registrationForm").validate({
            rules: {
                clubCardNumber : {
                    required: {
                          function (element) {
                       var returnVal = true;    
    if (varClubCardNumber || varClubCardNumber.length < 10){
        returnVal = false;
    }
    else if( varClubCardNumber.length == 10 )  {
        //The Phone Number field should contains numbers only
        var pattern  = /^[0-9-\s]*$/ ;
        var flag = pattern.test(varClubCardNumber);
        if(flag == false){
            returnVal = false;
        }else{
            $('#phoneNumber').val(varClubCardNumber);
        }
    }
    return returnVal;}
                    },

对不起,混乱的家伙。我想将我的 JS 验证放在 JQ 验证所需的验证上。

于 2013-11-08T06:21:25.350 回答