Gravity Forms v2.10.3:限制textarea行数并保留垂直调整功能
解决Gravity Forms Textarea固定行数且保留垂直拉伸功能的问题
问题核心
Gravity Forms当前版本中,即使选择「SMALL」字段尺寸,textarea仍被硬编码为rows="10",需要将初始行数限制为3行,同时保留用户垂直调整文本框大小的能力。此前尝试的函数钩子未生效,常规CSS(如max-height、固定height)会限制拉伸功能。
解决方案
1. 用PHP钩子修改硬编码的rows属性
使用gform_field_content钩子直接替换textarea的rows属性值,仅针对SMALL尺寸的textarea生效:
add_filter( 'gform_field_content', 'custom_small_textarea_rows', 10, 5 ); function custom_small_textarea_rows( $content, $field, $value, $lead_id, $form_id ) { if ( $field->type === 'textarea' && $field->size === 'small' ) { $content = str_replace( 'rows="10"', 'rows="3"', $content ); } return $content; }
将这段代码添加到主题的functions.php文件或自定义插件中。
2. 配套CSS确保拉伸功能正常
添加以下CSS,避免GF默认样式覆盖拉伸权限,同时保证初始高度匹配3行:
.gform_wrapper .gform_field--size-small textarea { resize: vertical; /* 明确允许垂直拉伸 */ min-height: auto; /* 移除可能的固定最小高度限制 */ height: auto; /* 让高度由rows属性控制 */ }
3. 备用方案:JS动态修改(若钩子未生效)
如果GF渲染逻辑导致PHP钩子不触发,可通过JS在页面加载后修改rows属性:
document.addEventListener('DOMContentLoaded', () => { document.querySelectorAll('.gform_field--size-small textarea').forEach(textarea => { textarea.setAttribute('rows', '3'); }); });
关键说明
- 直接修改
rows属性是控制初始行数的标准方式,配合resize: vertical可保留拉伸能力,避免了max-height或固定height导致的拉伸限制问题。 - 若PHP钩子不生效,检查GF版本是否有字段渲染逻辑更新,或确认字段尺寸的判断条件(部分版本可能用
field->cssClass替代field->size)。
内容的提问来源于stack exchange,提问作者ljvincent
相关产品推荐
相关产品推荐

