我正在预填充表单(从外部脚本生成)。使用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。
更新
我已经回答了我自己的答案..
答案 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");
}
}
}
我真的不明白其中的差别,但我很高兴它现在正在工作。