You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery问题:无法将主表单值赋值到Contact Form7模态窗表单

排查表单值复制失败的问题

结合你的代码和Contact Form7模态窗的特性,从这几个方向逐一排查:

1. 选择器不一致+引号语法错误

  • 代码里给模态窗表单赋值时,第一个用了ID选择器#modal-contact-form,第二个用了类选择器.modal-contact-form,如果你的模态窗表单只存在其中一个标识(比如只有ID或只有类),必然有一个选择器找不到元素。先检查模态窗表单的HTML结构,统一选择器,比如都用ID:
    jQuery("#modal-contact-form input[name='hotel_title']").val(selected_value);
    jQuery("#modal-contact-form input[name='check_in']").val(selected_value);
    
  • 另外,input[name='check_in’]里的右引号是中文全角引号,换成英文半角引号',否则这个选择器根本匹配不到主表单的check_in输入框。

2. 模态窗元素是动态生成的

Contact Form7的模态窗大多是触发后才动态插入DOM的,document.ready执行时,模态窗内的表单元素还不存在,直接用选择器查找会返回空。解决方法:

  • 优先绑定模态窗的显示事件(比如Bootstrap模态窗的shown.bs.modal,或者CF7模态窗插件对应的wpcf7modal:opened钩子),在弹窗完全显示后再执行赋值操作;
  • 临时方案可以用setTimeout延迟执行,确保元素已加载:
    jQuery('#request_to_book').change(function() {
        const hotelTitle = jQuery("input[name='hotel_title']").val();
        const checkIn = jQuery("input[name='check_in']").val();
        setTimeout(() => {
            const modalHotelInput = jQuery("#modal-contact-form input[name='hotel_title']");
            const modalCheckInInput = jQuery("#modal-contact-form input[name='check_in']");
            if (modalHotelInput.length) modalHotelInput.val(hotelTitle);
            if (modalCheckInInput.length) modalCheckInInput.val(checkIn);
        }, 200);
    });
    

3. 检查CF7生成的表单元素实际name属性

Contact Form7会自动给表单元素的name属性添加前缀(比如wpcf7-hotel_title或your-hotel_title),不是你设置的原始名称。打开浏览器开发者工具(F12),查看模态窗内输入框的实际name值,再修改选择器中的对应内容。

4. 变量声明规范问题

代码里的selected_value未用let/const声明,会成为全局变量,虽不影响功能,但建议加上声明避免意外冲突:

const selected_value = jQuery("input[name='hotel_title']").val();

内容的提问来源于stack exchange,提问作者Tasari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:01:30