【发布时间】:2016-09-18 01:32:37
【问题描述】:
我对 WordPress 还是很陌生,但基本上我想要实现的是让标签的描述成为我的 WordPress 4.5.2 自定义主题的必填字段
我尝试了三种方法,但都失败了,所以如果有 WordPress 专家可以指导我,那就太好了。
方法#1
functions.php
我尝试在调用 edit_tag_form_fields 和 add_tag_form 钩子时“编辑”钩子,然后通过 Javascript 进行修改
function require_category_description(){
require_once('includes/require_category_description.php');
}
add_action('edit_tag_form_fields', 'require_category_description');
add_action('add_tag_form', 'require_category_description');
require_category_description.php
<script>
jQuery(document).ready(function(){
var description = jQuery('#tag-description');
if(!description) description = jQuery('#description');
if(description){
description.parents('form').submit(function(){
if(description.val().trim().length < 1){
console.log('Please enter a description...');
return false;
}
});
}
});
</script>
它不起作用,即使描述字段为空,表单仍在提交,最重要的是,事件侦听器中的 console.log 从未发生过。我试图记录描述变量以确保它在 if 情况下。因此,我假设表单从未提交,整个“提交”是通过 Ajax 完成的,在按钮单击时完成。
方法#2
functions.php 与方法 #1 保持一致,但我对 Javascript 进行了一些更改,以针对按钮单击事件而不是表单提交事件。
require_category_description.php
<script>
jQuery(document).ready(function(){
var description = jQuery('#tag-description');
if(!description) description = jQuery('#description');
if(description){
var button = description.parents('form').find('#submit');
button.on('click', function(e){
if(description.val().trim().length < 1)
console.log('Please enter a description...');
e.preventDefault();
return false;
});
}
});
</script>
然而,表单仍在提交,但这次,我看到了控制台日志消息。
请输入描述...
我的理论是,WordPress 在我的事件之前将一个事件绑定到按钮的点击,因此它在转到我的自定义点击事件之前使用 Ajax 处理内置事件。
方法#3
require_category_description.php
在添加我自己的点击事件之前,我已尝试解除按钮与点击事件的绑定。
<script>
jQuery(document).ready(function(){
var description = jQuery('#tag-description');
if(!description) description = jQuery('#description');
if(description){
var button = description.parents('form').find('#submit');
button.unbind('click');
button.on('click', function(e){
if(description.val().trim().length < 1)
console.log('Please enter a description...');
e.preventDefault();
return false;
});
}
});
</script>
结果与方法#2 相同。表单仍在提交,但我看到控制台日志消息。
【问题讨论】:
-
它可能使用了提交事件而不是onclick!尝试在表单上取消绑定以查看您是否可以删除流程操作
标签: javascript php jquery wordpress forms