这是我的第一个(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">
我坚强,这更加困难。添加模块后,我只将目标输入框聚焦,然后立即将其散焦,用户看不到任何东西。
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();