触发更改事件以触发主干事件

时间:2017-11-23 13:18:52

标签: jquery backbone.js thymeleaf

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

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

经过一些研究:

  

onchange仅在用户键入输入时触发,然后输入失去焦点。

我尝试过每一个事件(一切!):$("#first_name_1")。触发器("更改")等。

几个小时后,我看到我的表单使用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()函数...

所以如何在外部主干文件中触发此事件?

非常感谢任何帮助...

PS:我没有Backbone.js的经验 我的应用程序是一个Spring Boot App。前端:Html,语义UI,Jquery,Thymeleaf。

更新

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

1 个答案:

答案 0 :(得分:1)

好的,我收到了一些现在有效的外部代码:

而不是

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");
        }
    }
}

我真的不明白其中的差别,但我很高兴它现在正在工作。