2017-02-16 117 views
1

我在通过Javascript在iframe的表单上设置值。 请注意,我无权访问iframe中显示的页面。我的Javascript页面位于同一台服务器上,因此它可以访问所显示的表单。使用javascript设置表单元素的值 - 仍然提示需要的字段

//HTML of Forename field in form control 
<input class="form-control" id="Forename" type="text" data-bind="value: dto.Forename"> 

的Javascript设定值:

var frameNode = document.getElementById('frm1'); 
var fieldNode = frameNode.contentDocument.getElementById('Forename'); 
fieldNode.value = FirstName; //previously defined 

成功设置的值(见附表张图片)。但是,当我点击保存时,我仍然收到'必需的值'消息。我怀疑这是因为Knockout Javascript库与视图模型绑定的值需要按键。

即使我手动进入表单并在每个值后按Enter/Tab,仍然会收到消息。只有当我手动将Forename和Surname更改为保存成功的其他内容时。

有没有人做过这样的事情?由于

In this image you can see the values are set

回答

0

我相信你所遇到的问题实际上是由于涉及到使用淘汰赛绑定一个更深层次的问题。更新UI控件的值直接不起作用,因为底层值存储在JavaScript视图模型对象中。 DOM元素仅反映该值,并使用引擎盖下的更改事件挂钩执行更新。当您在UI上手动更改值时,将触发更改事件,并更新视图模型值。

Knockout.js Docs

所以正确地更新你应该尝试使用淘汰赛库更新基础数据的值:

​​

如果你不能得到这工作,你也可以尝试手动触发变化事件。如果你有jQuery,那就容易多了,但仍然可以不用。见How can I trigger an onchange event manually?

相关问题