【问题标题】:how to validate for phone field to ONLY accept 8 digits (not less than, and not greater than)如何验证电话字段仅接受 8 位数字(不小于,不大于)
【发布时间】:2015-10-30 17:54:34
【问题描述】:

我试图寻找答案,但是那里有太多版本的代码,这让像我这样的菜鸟感到困惑......我需要电话字段只接受 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>

任何帮助将不胜感激...

【问题讨论】:

  • 在 JS 和 HTML 中使用正则表达式 ^\d{8}$ &lt;input type="number" pattern="\d{8}" /&gt;
  • 但是……我的电话号码有 11 位数字……
  • 客户只为他们的员工使用它,他们位于新加坡,所以 8 位数字就足够了

标签: javascript jquery digit


【解决方案1】:

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

如果代码有效,但您在收到未满足提交条件的警告后仍然可以单击提交(或更重要的是,该表单是可提交的),则问题可能出在您的

元素。如果您的表单中有 onSubmit 事件处理程序(假设您这样做),则调用 tel 的验证代码。不。字段,您可以编写 onSubmit 调用以返回 false 或 true 的函数。如果为 false,则取消提交。如果为真,则执行。

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

How to prevent form from being submitted?

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

【讨论】:

    【解决方案2】:

    在谷歌搜索和测试表单时,我注意到名称字段至少有 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 );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 1970-01-01
      • 2022-01-15
      相关资源
      最近更新 更多