以编程方式填写的dijit输入框的值在未手动激活输入框(javascript)的情况下不会存储

问题描述 投票:0回答:1

这是我的第一个(javascript)开发,所以我处于黑暗中。我正在开发一个开箱即用的小部件,但我找不到数据到服务器的路由,因为它既灵活又复杂,所以我想简单地将值放入dijit输入框中。itemId是数据。顺便说一句:弹出窗口小部件的输入框有一个自动分配的ID,每次打开时ID都会递增。增量方法解决了我的问题。不幸的是,此问题解决方法无法正常工作,因为用户必须在提交表单之前单击输入框。如果没有发生,则不会存储数据。

对此有任何解决方法?还是可以告诉我为什么会这样?安全? (如果要运行,我想隐藏此部分)

      var itemID= this._editWidget.map.itemInfo.item.id;     
      var textBoxNumber = this.increment();


      dojo.connect(dijit.byId('dijit_form_ValidationTextBox_'+(textBoxNumber+2)), 'onChange', function () {
        var inputBoxId = "dijit_form_ValidationTextBox_"+ textBoxNumber;
        var mapid=dijit.byId(inputBoxId).attr("value");      
        var update = mapid.replace(mapid, itemID);
        dojo.byId(inputBoxId).value = update;
      });

    increment: (function(n) {
      return function() {
        n += 4;
        return n;
      }
    }(-3)),

动态html:

<div class="dijitReset dijitInputField dijitInputContainer"><input 
class="dijitReset dijitInputInner" data-dojo-attach-point="textbox,focusNode" 
autocomplete="off" type="text" tabindex="0" id="dijit_form_ValidationTextBox_1" 
maxlength="50" aria-required="false" value="" aria-invalid="false"></div>

<input class="dijitReset dijitInputInner" 
data-dojo-attach-point="textbox,focusNode" 
autocomplete="off" type="text" tabindex="0" 
id="dijit_form_ValidationTextBox_1" 
maxlength="50" aria-required="false" 
value="" aria-invalid="false">
javascript dojo inputbox
1个回答
0
投票

我坚强,这更加困难。添加模块后,我只将目标输入框聚焦,然后立即将其散焦,用户看不到任何东西。

define(['dijit/focus'],
function (focusUtil){
dojo.connect(dijit.byId('dijit_form_ValidationTextBox_'+(textBoxNumber+2)), 'onChange', function () {
        var inputBoxId = "dijit_form_ValidationTextBox_"+ textBoxNumber;
        var mapid=dijit.byId(inputBoxId).attr("value");      
        var update = mapid.replace(mapid, itemID);
        dojo.byId(inputBoxId).value = update;
        focusUtil.focus(dojo.byId(inputBoxId));
        focusUtil.curNode && focusUtil.curNode.blur();
})

类似于:getElementbyId('someId').focus();

© www.soinside.com 2019 - 2024. All rights reserved.