如何在使用 Ultimate 会员插件在 Wordpress 中提交之前删除输入值
How to remove an input value before submitting it in Wordpress with the Ultimate member plugin
我想知道如何在使用 Ultimate Member 插件在 Wordpress 中提交个人资料表单之前删除输入值。我已经坚持了整整一个星期。
问题是我在个人资料表单中有条件字段,如果用户没有 select,他们在提交表单时仍会保存他们的值。该插件不会有条件地从隐藏字段中删除值,如果您想使用 REST 将这些字段发送到其他地方,这是一个问题 API.
我不能用 PHP 做到这一点,所以我在主要函数中添加了一个脚本来尝试清除这些值。这在用户刷新表单时有效,但在用户提交表单时无效 with the hook um_after_user_updated
function remove_before_send () {
?>
<script>
var elements = document.querySelectorAll('.um-is-conditional');
for (var i = 0; i < elements.length; i++) {
elements[i].childNodes[1].childNodes[0].value = "";
}
</script>
<?php
}
add_action('um_profile_content_main', 'remove_before_send');
编辑:
感谢@JB_DELR的评论。你真的给了我所有的线索。
这是我的最终代码(我并不自豪,因为我想使用 php,但这是我能做的最好的)
function remove_before_send () {
?>
<script>
var boton = document.querySelector("div.um-left.um-half > input");
boton.addEventListener("click", function(){
var elements = document.querySelectorAll('.um-is-conditional');
for (var i = 0; i < elements.length; i++) {
if (elements[i].style.display == "none") {
elements[i].childNodes[1].childNodes[0].value = "";
}
}
});
</script>
<?php
}
add_filter( 'um_profile_content_main', 'remove_before_send');
您的 js 脚本需要处理表单提交事件,防止默认提交,删除不必要的字段并提交表单本身。
像这样:
<script>
var form = document.querySelector(<select the form>);
form.onsubmit = function(e) {
e.preventDefault(); // don't submit the form right now;
var elements = document.querySelectorAll('.um-is-conditional');
for (var i = 0; i < elements.length; i++) {
elements[i].childNodes[1].childNodes[0].value = "";
}
// to remove element, this remove the input field, so field is no more in the request
// elements[i].childNodes[1].removeChild(elements[i].childNodes[1].childNodes[0]);
}
form.submit();
</script>
我想知道如何在使用 Ultimate Member 插件在 Wordpress 中提交个人资料表单之前删除输入值。我已经坚持了整整一个星期。
问题是我在个人资料表单中有条件字段,如果用户没有 select,他们在提交表单时仍会保存他们的值。该插件不会有条件地从隐藏字段中删除值,如果您想使用 REST 将这些字段发送到其他地方,这是一个问题 API.
我不能用 PHP 做到这一点,所以我在主要函数中添加了一个脚本来尝试清除这些值。这在用户刷新表单时有效,但在用户提交表单时无效 with the hook um_after_user_updated
function remove_before_send () {
?>
<script>
var elements = document.querySelectorAll('.um-is-conditional');
for (var i = 0; i < elements.length; i++) {
elements[i].childNodes[1].childNodes[0].value = "";
}
</script>
<?php
}
add_action('um_profile_content_main', 'remove_before_send');
编辑: 感谢@JB_DELR的评论。你真的给了我所有的线索。 这是我的最终代码(我并不自豪,因为我想使用 php,但这是我能做的最好的)
function remove_before_send () {
?>
<script>
var boton = document.querySelector("div.um-left.um-half > input");
boton.addEventListener("click", function(){
var elements = document.querySelectorAll('.um-is-conditional');
for (var i = 0; i < elements.length; i++) {
if (elements[i].style.display == "none") {
elements[i].childNodes[1].childNodes[0].value = "";
}
}
});
</script>
<?php
}
add_filter( 'um_profile_content_main', 'remove_before_send');
您的 js 脚本需要处理表单提交事件,防止默认提交,删除不必要的字段并提交表单本身。
像这样:
<script>
var form = document.querySelector(<select the form>);
form.onsubmit = function(e) {
e.preventDefault(); // don't submit the form right now;
var elements = document.querySelectorAll('.um-is-conditional');
for (var i = 0; i < elements.length; i++) {
elements[i].childNodes[1].childNodes[0].value = "";
}
// to remove element, this remove the input field, so field is no more in the request
// elements[i].childNodes[1].removeChild(elements[i].childNodes[1].childNodes[0]);
}
form.submit();
</script>