触发变化事件触发backbone事件

Trigger change event to trigger backbone event

我正在预填表格(从外部脚本生成)。使用 Jquery:$("#first_name_1").val("test");

提交表单时提示我的输入字段为空..

经过一些研究:

onchange only fires when the user types into the input and then the input loses focus.

我尝试了每个事件(一切!):$("#first_name_1").trigger("change"), 等..

几个小时后,我看到我的表单已通过使用 Backbone.js 的外部脚本进行了验证...它是缩小版的废话,但我现在在这里 :

        return n.addHandler([{
        selector: "[contenteditable]",
        updateMethod: "html",
        events: ["input", "change"]
    }, {
        selector: "input",
        events: ["propertychange", "input", "change"],
        update: function (e, t) {
            console.log("88");
            e.val(t);
        },
        getVal: function (e) {
            console.log("99");
            console.log(e);
            return e.val();
        }

更新 -> Link to the external Backbone.js script

当我在输入字段中手动键入一些数据时,应用程序仅记录“99”。但是当我使用 Jquery val() 函数时不是...

所以 如何在我的外部 backbone 文件中触发此事件??

非常感谢您的帮助...

PS: 我没有任何经验 Backbone.js 我的应用程序是 Spring 启动应用程序。前端:Html、语义 UI、Jquery、Thymeleaf。

更新

我已经回答了我自己的答案..

好的,我已经从外部人员那里收到了一些代码,现在可以使用了:

而不是

function preFillForm(){
    var gegevens = {'first_name_1':'test2 ','last_name_2':'test2 ','e-mail_address_3':'test2@test.com '};
    for(var id in gegevens){
            $("#" + id).val(gegevens[id]);
            $("#" + id).trigger("change");
    }
}

我需要做

function preFillForm(){
    var gegevens = [[${gegevens}]];
    for(var id in gegevens){
        var input = $("#" + id)[0];         
        input.value = gegevens[id];
        if ("createEvent" in document) {
            var evt = document.createEvent("HTMLEvents");
            evt.initEvent("change", true, true);
            input.dispatchEvent(evt);
        }
        else {
            input.fireEvent("onchange");
        }
    }
}

我不太明白其中的区别,但我很高兴它现在可以正常工作了。