我發現以下代碼可以在 WordPress 中的表單上將欄位設為只讀,但我不知道如何使其適用于兩個單獨的表單:
// update '1' to the ID of your form
add_filter( 'gform_pre_render_1', 'add_readonly_script' );
function add_readonly_script( $form ) {
?>
<script type="text/javascript">
jQuery(document).on('gform_post_render', function(){
/* apply only to a input with a class of gf_readonly */
jQuery("#input_1_14_4").attr("readonly","readonly");
});
</script>
<?php
return $form;
}
如何使此腳本與兩個單獨的表單和兩個單獨的欄位一起使用?我嘗試添加腳本兩次,但它破壞了網站。
表格:gform_pre_render_1、gform_pre_render_20
欄位:#input_1_14_4、#input_20_14_4
uj5u.com熱心網友回復:
有更雄辯的方法可以做到這一點,但最重要的部分是您需要注冊兩個過濾器,每個表單一個。過濾器的回呼可以是直接函式(我更喜歡),也可以是命名函式,這就是您的原始代碼可能中斷的地方,因為我猜您將函式命名為相同,這在 PHP 中無效。
下面的代碼創建兩個唯一命名的函式并為每個函式注冊操作。
需要注意的是,從過濾器中回顯內容通常不是一個好主意,并且可能會破壞某些假定不會發生這種事情的代碼路徑。也就是說,顯然這就是 GF 建議的方式,所以我想這是安全的,希望如此。
add_filter( 'gform_pre_render_1', 'add_readonly_script_form_1' );
function add_readonly_script_form_1( $form ) {
?>
<script type="text/javascript">
jQuery(document).on('gform_post_render', function(){
/* apply only to a input with a class of gf_readonly */
jQuery("#input_1_14_4").attr("readonly","readonly");
});
</script>
<?php
return $form;
}
add_filter( 'gform_pre_render_20', 'add_readonly_script_form_20' );
function add_readonly_script_form_20( $form ) {
?>
<script type="text/javascript">
jQuery(document).on('gform_post_render', function(){
/* apply only to a input with a class of gf_readonly */
jQuery("#input_20_14_4").attr("readonly","readonly");
});
</script>
<?php
return $form;
}
或者,雖然我現在沒有可用的 WordPress 副本來測驗這個,但我認為你可以使用這個 JS 完全跳過 PHP、Gravity 和 jQuery。它也可能需要對放置進行一些調整。
document
.addEventListener(
'gform_post_render',
() => {
document
.querySelectorAll('#input_1_14_4, #input_20_14_4')
.forEach(
(field) => {
field.setAttribute('readonly', 'readonly');
}
)
;
}
)
;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/486382.html
