我的表单有多个步骤。
你填写一些内容,单击下一步,然后填写更多内容。
我担心的是,该函数直到按下提交按钮时才会触发。
届时,我是否能够操作先前字段上的数据?
<?php
//Change _6 to the form ID number everywhere
add_action('gform_pre_submission_6', 'capitalize_fields_6');
function capitalize_fields_6($form){
// add all the field IDs you want to capitalize, to this array
$fields_to_cap = array('input_id_here');
// add all uppercase first letter id's, to this array
$field_to_firstLetter = array('input_id_here');
foreach ($fields_to_cap as $each) {
// for each field, convert the submitted value to uppercase and assign back to the POST variable
// the rgpost function strips slashes
$_POST[$each] = strtoupper(rgpost($each));
}
foreach ($field_to_firstLetter as $each) {
$_POST[$each] = ucwords(rgpost($each));
}
// return the form, even though we did not modify it
return $form;
}
?>
gform_pre_submission
钩子仅在表单实际 POST 之后触发,但在对来自表单的数据执行任何重要操作之前触发。
多页表单不会在页面之间提交任何内容,它或多或少只是将页面包装在块中并显示/隐藏它们 - 它只是被设计为一种"更美观"的方式来呈现长表单,而不是在您的页面上拥有非常可滚动的表单。例外情况是"保存并继续"选项,但实际上仍然没有验证字段掩码/格式之外的任何内容,并且它不会通过gform_pre_submission
运行。
如果您需要在以前的页面上"操作数据",则最好使用 JavaScript 的.onchange()
事件处理程序函数在提交数据之前抢先更改数据,但在将数据键入字段之后。您还可以在所需的输入上使用 CSS 的text-transform
属性并将其设置为capitalize
(请注意,这仅影响显示而不是实际值,因此您仍然需要通过gform_pre_submission
钩子运行它。