2015-01-21 94 views
1

我想验证textarea是地址字段,它必须包含字母和数字,至少包含1个数字。例如:“Laksda Adisucipto street,no 22A。” 但是当我只需键入:“Laksda距离Adisucipto街”(无编号)它可以显示警报“你必须输入至少1号”验证textarea输入的字母数字值

我使用Twitter的引导和Validator.js 这里是我的代码

HTML :

<div class="form-group col-md-12"> 
         <label for="address" class="control-label"><span>*</span> <?php echo $this->lang->line('address');?></label> 
         <textarea class="form-control" id="address" rows="5" required name="address" data-error="Address is required"></textarea> 
         <span class="help-block with-errors"></span> 
        </div> 

JS:

<script> 
$('#address').change(function() 
{ 
var letterNumber = /^[0-9a-zA-Z]+$/; 
if(($('#').value.match(letterNumber)) 
{ 
return true; 
} 
else 
{ 
alert("message"); 
return false; 
} 
} ); 

+0

问题是什么?该代码显然是错误的,因为它不允许任何空格,甚至不尝试检查至少一个数字(数字)。 – 2015-01-21 06:34:33

+0

即使没有输入数字,上述正则表达式也是允许的。一个快速和脏的修复 - '/^.* [a-zA-Z] +。* [0-9] +。* $ /' – 2015-01-21 06:45:08

回答

1

试试这个

$('#address').blur(function() 
{ 
var letterNumber = /^[0-9a-zA-Z]+$/; 
    if(this.value.match(letterNumber)) 
     { 
     return true; 
     } 
    else 
    { 
    alert("message"); 
    return false; 
    } 
}); 

您可以点击此处查看:http://jsfiddle.net/oa6eewck/

0
$('#address').on('change', function() { 
    var hasNumber = this.value.match(/\d/); 
    var isAlfa = this.value.match(/^[0-9a-zA-Z]+$/); 

    if (hasNumber && isAlfa) { 
     return true; 
    } else { 
     alert("message"); 
     return false; 
    } 
}); 

FIDDLE

-1

adeneo的解决方案是正确的。但我认为是阿尔法应该有以下值:

var isAlfa = this.value.match(/^[A-Za-z \ d( - 。,)] + /);

1
$('#address').blur(function() 
{ 
var letterNumber = /^[0-9a-zA-Z]+$/; 
    if(this.value.match(letterNumber)) 
     { 
     return true; 
     } 
    else 
    { 
    alert("message"); 
    return false; 
    } 
}); 

此功能将只允许文字和数字,这将是很好的一个输入文本字段,但因为你有文本区域“空间”和“逗号”和“时间”,预计权。

因此,更好地遵循表达如下:

$('#address').blur(function() 
     { 
     var hasNumber = this.value.match(/^[a-zA-Z0-9\s .,]+$/); 
     if (hasNumber) { 
     return true; 
     } else { 
     alert("message"); 
     return false; 
     } 
     }); 
+1

您可以在reg exp中添加特殊字符以提高效率,需要允许更多特殊字符如this.value.match(/^[a-zA-Z0-9 \ s。,?“ - ] + $ /); 连字符应该是atlast,否则它将被视为字符用于定义起点和终点 – Sudheesh 2015-07-08 12:43:44