【发布时间】:2021-10-01 14:21:24
【问题描述】:
对于上下文:表单是由 WordPress 驱动的网站中的 NinjaForms 插件创建的。
当页面完成加载时,此 JavaScript 成功地将值插入到必填字段中。确实需要几次尝试才能找到 input#insertOrderId 元素。当用户提交表单时,该字段被标记为空,即使您可以清楚地看到它已被填写。如果用户手动对字段进行编辑,表单将提交。
我得出的结论是,当此 JavaScript 插入表单时,该表单无法访问 input#insertOrderId 的值。
为什么会这样?或者,发生了什么?
document.addEventListener('DOMContentLoaded', (event) => {
const urlParams = new URLSearchParams(window.location.search);
const orderId = urlParams.get('order_id');
/**
* re-run querySelector until the element is found
*/
function pollDOM () {
let orderIdField = document.querySelector('input#insertOrderId');
if ( orderIdField === null ) {
setTimeout(pollDOM, 300);
} else {
if ( orderId ) {
orderIdField.setAttribute('value', orderId);
}
}
}
pollDOM();
});
【问题讨论】:
-
表单元素是否也是动态添加的,否则您必须轮询它的存在似乎很奇怪?
标签: javascript html wordpress forms