【问题标题】:Programmatically filled out dijit inputbox's value is not stored without activating manually the inputbox (javascript)如果不手动激活输入框(javascript),则不会存储以编程方式填写的 dijit 输入框的值
【发布时间】:2020-05-15 12:09:30
【问题描述】:

这是我的第一个 (javascript) 开发,所以我一无所知。我正在开发一个开箱即用的小部件,但我找不到数据到服务器的路由,因为它既灵活又复杂,所以我认为我只是将值放入 dijit 输入框。 itemId 是数据。 顺便说一句:弹出窗口小部件的输入框有一个自动分配的 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】:

    我觉得这更难。我只是在添加 mod 后将目标输入框聚焦,然后立即将其散焦,用户看不到任何内容。

    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();

    【讨论】:

      猜你喜欢
      • 2021-08-01
      • 1970-01-01
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      相关资源
      最近更新 更多