javascript - JQuery - 在第 3 方表单上预填充表单字段

标签 javascript jquery forms

我的网页上有一个 Netresults 表单,需要预先填充。该表单是使用 javascript 插入到页面中的,因此我无法在源代码中看到表单字段。

如果表单位于我的页面上,我将使用以下代码,但由于它不在我的页面上,我不知道如何定位这些字段。有人可以帮忙吗?

var keywords = getUrlParameter('keywords');

$('input[name=netres-keywords]').val(keywords);

使用以下代码插入网络结果表单:

(function() {
    var $__MAForm;
    ($__MAForm =function(){
        if(typeof($__MA)=="undefined"){
            return window.setTimeout($__MAForm,50);
        }else{
            $__MA.addMAForm("43788303-2b62-4774-ad0f-63542e3ed92a", "forms.example.com");
        }
    })();
})();

最佳答案

这可能需要使用 Mutation Observer .

突变观察者将检查 DOM 的更改(添加元素等),我们可以使用它来触发事件。下面的代码将更改名称为 netres-keywords 的输入的值随时新<form>元素被添加到 <body> .

在本文底部的 JSFiddle 示例中,我创建了一个按钮来模拟添加到页面的表单。如您所见,文本框将预先填充。

EXAMPLE JSFIDDLE

$(document).ready(function() {

    var keywords = "this is a test keyword";
    var formCount = $("form").length;

    var observer = new MutationObserver(function() {
        var newFormCount = $("form").length;
        if (newFormCount > formCount) {
            $('input[name=netres-keywords]').last().val(keywords);
        }
    });

    $("button").click(function() {
        $form = $("<form>").html("<h1>New form:</h1><input type='text' name='netres-keywords'>");
        $("body").append($form);
    });
    
    var observerConfig = {
        attributes: true, 
        childList: true, 
        characterData: true 
    };
    
    var targetNode = document.body;
    observer.observe(targetNode, observerConfig);
});
form {
    padding: 10px;
    border: 1px solid red;
    margin-bottom: 20px;
}

h1 {
    margin: 0;
    padding: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>
    SIMULATE ADDING FORM
</button>
<br>
<br>

关于javascript - JQuery - 在第 3 方表单上预填充表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41826086/

相关文章:

jquery - 使用jquery.form.js的异步上传问题

javascript - 使用 javascript 检查 html 表单的结果

javascript - Ext JS 4.2.1 - 带分页的网格 - 复选框状态丢失

javascript - 如何重新加载 reCaptcha v3?

javascript - 类 - 通过等待返回数据?

javascript - 在 javascript 中使用复杂的揭示模块模式

javascript - 如何将 jQuery Validation 插件与元数据、jQuery Forms 和 xVal 一起使用?

javascript - 对多个时间范围进行排序

javascript - 可拖动效果第二次不显示

php - 制作代码点火器注册表