如何验证手机字段只能接受8位数字(不小于,不大于)

时间:2015-10-30 17:54:34

标签: javascript jquery digit

我试图寻找答案,但是那里的代码版本太多了,令人困惑的像我这样的菜鸟....我需要电话字段只接受8位数字,否则表格不会提交。 ..

这是我得到的代码(我添加了min和mac长度,但它没有工作:

public function validate( $data )
{
$validator = new AB_Validator();
foreach ( $data as $field_name => $field_value ) {
switch ( $field_name ) {
case 'email':
$validator->validateEmail( $field_name, $data );
break;
case 'phone':
$validator->validatePhone( $field_name, $field_value, $min_length="8", $max_length="8", true );
break;
case 'date_from':
case 'time_from':
case 'time_to':
case 'appointment_datetime':
$validator->validateDateTime( $field_name, $field_value, true );
break;
case 'name':
$validator->validateString( $field_name, $field_value, 255, true, true, 3 );
break;
case 'service_id':
$validator->validateNumber( $field_name, $field_value );
break;
case 'custom_fields':
$validator->validateCustomFields( $field_value );
break;
default:
}
}

if ( isset( $data['time_from'] ) && isset( $data['time_to'] ) ) {
$validator->validateTimeGt( 'time_from', $data['time_from'], $data['time_to']             );
}

return $validator->getErrors();
}

我也尝试添加以下脚本,但它只给了我一个警告,我仍然可以点击提交......

<script type='text/javascript'>

function formValidator(){
// Make quick references to our fields
var phone = document.getElementById('phoneno');

// Check each input in the order that it appears in the form!
        if(isNumeric(phone, "Please enter a valid phone number")){
            if(lengthRestriction(phone, 8, 8)){
                return true;

            }
        }

return false;

}

function notEmpty(elem, helperMsg){
if(elem.value.length == 0){
    alert(helperMsg);
    elem.focus(); // set the focus to this input
    return false;
}
return true;
}

function isNumeric(elem, helperMsg){
var numericExpression = /^[0-9]+$/;
if(elem.value.match(numericExpression)){
    return true;
}else{
    alert(helperMsg);
    elem.focus();
    return false;
}
}



function lengthRestriction(elem, min, max){
var uInput = elem.value;
if(uInput.length >= min && uInput.length <= max){
    return true;
}else{
    alert("Please enter " +max+ " digits");
    elem.focus();
    return false;
}
}

</script>

<script>
$(document).ready(function(){
$("button.next").click(function(){
    $formValidator();
});
});
</script>

非常感谢任何帮助......

2 个答案:

答案 0 :(得分:0)

“我也尝试添加以下脚本,但它只给了我一个警告,我仍然可以点击提交......”

如果代码有效,但您仍然可以在收到未提及提交条件的警告后单击提交(或更重要的是,表单可提交),则问题可能出在您的&lt;形式&GT;元件。如果您的表单中有onSubmit事件处理程序(假设您这样做),则调用tel的验证代码。没有。字段,您可以编码onSubmit调用的函数返回false或true。如果为false,则提交将被取消。如果为true,则执行。

如果这对您来说都是新闻,请查看此SO问题以获取指导:

How to prevent form from being submitted?

在那个和一些谷歌搜索之间,你应该找出你需要的东西,假设这是你的问题。

答案 1 :(得分:0)

在搜索和测试表单时,我注意到名称字段至少需要3个字符,因此我检查了代码并注意到了这一点:

case 'name':
$validator->validateString( $field_name, $field_value, 255, true, true, 3 );

所以我调整并将其添加到手机部分,表单现在按预期工作,只接受8位数字。这是添加的代码:

case 'phone':
$validator->validatePhone( $field_name, $field_value, true );
$validator->validateString( $field_name, $field_value, 8, true, true, 8 );