我在“自定义表格7”数字字段中添加必填和步骤属性时遇到问题。我尝试过以相同的形式使用两种不同的方法,但是有两个不同的问题
我正在尝试添加必填数字字段,步长为0.05。
1)[number* number-491 id:abc min:0 max:100000 step:0.05 placeholder “CMP*”]
–这是对步长属性的认可,而不是对步长0.05的认可
2)<input type=”number” name=“CMP” placeholder=“CMP*” min=0 max=100000 step=“0.05” required/>
–这是对步长属性的认可,而不是必需的属性。
我可以使用任一方法或替代方法,我只需要一个数字字段,该字段将是必填字段,步长为0.05。
答案 0 :(得分:1)
您可以通过自定义来实现。在主题或子主题的functions.php文件中使用以下代码。
function wpcf7_number_floating_step_form_tag_handler( $tag ) {
if ( empty( $tag->name ) ) {
return '';
}
if( $tag->type == 'numberstepfloat*' ){
$tag->type = 'number*';
$tag->basetype = 'number';
}
$validation_error = wpcf7_get_validation_error( $tag->name );
$class = wpcf7_form_controls_class( $tag->type );
$class .= ' wpcf7-validates-as-number-decimal';
if ( $validation_error ) {
$class .= ' wpcf7-not-valid';
}
$atts = array();
$atts['class'] = $tag->get_class_option( $class );
$atts['id'] = $tag->get_id_option();
$atts['tabindex'] = $tag->get_option( 'tabindex', 'signed_int', true );
$atts['min'] = $tag->get_option( 'min', 'signed_int', true );
$atts['max'] = $tag->get_option( 'max', 'signed_int', true );
$atts['step'] = $tag->get_option( 'step', '', true );
if ( $tag->has_option( 'readonly' ) ) {
$atts['readonly'] = 'readonly';
}
if ( $tag->is_required() ) {
$atts['aria-required'] = 'true';
}
$atts['aria-invalid'] = $validation_error ? 'true' : 'false';
$value = (string) reset( $tag->values );
if ( $tag->has_option( 'placeholder' ) || $tag->has_option( 'watermark' ) ) {
$atts['placeholder'] = $value;
$value = '';
}
$value = $tag->get_default_option( $value );
$value = wpcf7_get_hangover( $tag->name, $value );
$atts['value'] = $value;
if ( wpcf7_support_html5() ) {
$atts['type'] = $tag->basetype;
} else {
$atts['type'] = 'text';
}
$atts['name'] = $tag->name;
$atts = wpcf7_format_atts( $atts );
$html = sprintf(
'<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>',
sanitize_html_class( $tag->name ), $atts, $validation_error );
return $html;
}
function custom_add_form_tag_floatingnumber() {
wpcf7_add_form_tag( array( 'numberstepfloat', 'numberstepfloat*' ), 'wpcf7_number_floating_step_form_tag_handler', array( 'name-attr' => true ) );
}
add_action( 'wpcf7_init', 'custom_add_form_tag_floatingnumber' );
function custom_numberstepfloat_validation($result, $tag){
$customnumfield = $tag->name;
if($_POST[$customnumfield]=='' || $_POST[$customnumfield]==null){
$result->invalidate( $tag, "This field is required." );
}
return $result;
}
add_filter( 'wpcf7_validate_numberstepfloat*', 'custom_numberstepfloat_validation', 20, 2 );
以上代码的作用是,广告一个自定义表单标签“ numberstepfloat”,该标签实际输出输入类型编号,但包含step属性。代码广告验证自定义标记中的另一个功能。验证仅检查该值是否存在。如果不是,则该字段无效。
类似于联系表7中的本机标签,自定义标签将按以下方式使用。
[numberstepfloat* number-491 min:0 max:100000 step:0.05 id:abc placeholder "CMP*"]
希望这会有所帮助。