dongsi073898 2018-01-09 11:44
浏览 34
已采纳

重力形式单行文本字段自定义验证(数字只有10位或更多位)

Our web form built with Gravity Forms on WordPress uses a "single line text" field type for the phone number field.

How can I add a custom validation to this so that it will only allow submission of integers and only if there is 10 or more input?

This is because in Australia our phone numbers (without country code) are 10 digits. We're currently getting responses containing letters or incomplete numbers.

I've just implemented the below function but it doesn't work.

// Form Phone Field Validation to use numbers only with minimum 10 digits
add_filter( 'gform_field_validation_16_4', 'custom_validation', 10, 4 ); //Replace the ## with your form ID
function custom_validation( $result, $value, $form, $field ) {

$value = str_replace(array('(',')','-',' '),'',$value);//Remove hyphens, parenthesis, and spaces - you can take this out if you want strict numbers only

if ( $result['is_valid'] && strlen( $value ) < 10 && is_numeric( $value ) ) { 

$result['is_valid'] = false;
$result['message'] = 'Please enter a valid phone number of 10 or more digits with area code';
}
return $result;
}
  • 写回答

2条回答 默认 最新

  • drwj4061 2018-01-09 13:39
    关注

    Based on documentation

    you should be doing something like this,

    //replace {FORM_ID} with your form ID
    add_filter( 'gform_validation_{FORM_ID}', 'custom_validation' );
    function custom_validation( $response ) {
        $form = $response['form'];
    
    
        //replace {INPUT_ID} with the input ID you want to validate    
        $value = str_replace(array('(',')','-',' '), '', rgpost( 'input_{INPUT_ID}' ) );
    
        if ( strlen( $value ) < 10 || !is_numeric( $value ) ) { 
    
            $response['is_valid'] = false;
    
            //finding Field with ID and marking it as failed validation
            foreach( $form['fields'] as &$field ) {
    
                //NOTE: replace {INPUT_ID} with the field you would like to validate
                if ( $field->id == '{INPUT_ID}' ) {
                    $field->failed_validation = true;
                    $field->validation_message = 'Please enter a valid phone number of 10 or more digits with area code';
                    break;
                }
            }
    
        }
    
        //Assign modified $form object back to the validation result
        $response['form'] = $form;
        return $response;
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?