动态改变约束

2024-01-19

我有一个 dijit.form.NumberTextBox 输入字段,以这些参数开头:

 new dijit.form.NumberTextBox({
    id: din1,
    style: "width:60px",
    constraints: {
        places: 0,
        pattern: '######'
      }
    },
    din1);

一切都很好......我的问题是我想动态更改“位置”和“模式”参数。所以我写这个来改变“地点”和“模式”参数:

var myFldObj = dijit.byId(din1);
if (myFldObj) {
  var myConstObj = myFldObj.attr('constraints');
  if (myConstObj) {
     myConstObj.places = 2;
     myConstObj.pattern = '#####.0';
  }
}

因此,在我再次显示表单后,我希望输入字段允许 2 位小数,但表单的行为仍然类似于places=0 和pattern='######'。当我检查“places”和“pattern”的值时,我得到了我所期望的结果(2 和 #####.0)。我的问题:

您可以即时更改这些值吗?

OR

您是否必须销毁原始 dijit 对象并使用新参数重新创建?

Thx!!


所以,这对我有用:

首先,我认为这是一个错误,因为输入字段的开头如下

new dijit.form.NumberTextBox({
    id: "fieldID",
    style: "width:60px",
    constraints: {
        places: 0
      }
    },
    "fieldID");

然后使用如下代码即时更改:

注意:ntbArry - 绑定到 html 的 dijit.form.NumberTextBox 对象数组 输入标签 ID。

for (var x=0;x < ntbArry.length;x++) { 
  var handle = ntbArry[x];
  if (handle) {
    handle.attr('constraints').places = 2;
    handle.attr('constraints').pattern = '#####.0#';      
  } 
}

不会表现出与以这种方式创建的字段相同的行为(没有即时的约束 mods):

new dijit.form.NumberTextBox({
  id: "fieldID",
  style: "width: 60px",
  constraints: {
    places: 2,
    pattern: '#####.0#'
  }
},
"fieldID");

它的行为很接近,但每次您键入小数点时,都会弹出错误消息,指出输入无效。在最初使用约束 place=2 和模式“#####.0#”创建的字段上键入小数点时,不会弹出此消息。

因此,为了获得我想要的原始行为:

fieldIDEvents 是与 NumberTextBox 字段关联的 dojo 事件数组。 在继续断开 dojo 事件之前

for (var x=0;x < fieldIDEvents.length;x++) {
  var handle = fieldIDEvents[x];
  if (handle) {    
    dojo.disconnect(handle);
  }
}

然后销毁 NumberTextBox dojo 对象

for (var x=0;x < ntbArry.length;x++) {
  var handle = ntbArry[x];
  if (handle) {
    handle.destroy();
    ntbArry[x] = null;
  }
}

接下来,将输入标记放回 html 中,因为它会被破坏:

注意:tdtag 和 html td 标签上的 id 应包含输入标签。

var fld1 = this.document.getElementById("tdtag");

if (fld1) {
  //alert("\""+fld1.innerHTML+"\"");
  fld1.innerHTML = "<input id=\"fieldID\">";
} 

现在,再次创建 NumberTextBox 对象:

ntbArry[0] = new dijit.form.NumberTextBox({
  id: "fieldID",
  style: "width: 60px",
  constraints: {
    places: 2,
    pattern: '#####.0#'
  }
},
"fieldID");

这是一些额外的步骤,但是,至少我知道这对我有用。如果我错过了一些基本的东西,请告诉我,很容易错过这些东西的小细节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态改变约束 的相关文章

  • dojo dgrid 中不区分大小写的排序

    是否可以不区分大小写进行排序 例如 默认情况下排序显示如下 Awesomeman adam beyonce 但是 我想排序 adam Awesomeman beyonce 是否可以轻松地覆盖灵敏度 据我所知 网格继承自OnDemandGri
  • 如何使用javascript重置div中的滚动位置

    我正在开发移动混合应用程序 在我的 html 页面中 我有 3 个选项卡 单击选项卡时 可滚动 div 的内容会发生更改 我的问题是 当我向下滚动 div 视图 的内容并单击另一个选项卡时 内容消失 但内容在那里 请帮助我 以便我可以在单击
  • 尝试使用 id==valores0 注册小部件,但该 id 已注册

    我收到此错误 我不知道如何解决 我读这个链接 https stackoverflow com questions 2222517 error tried to register widget with id grid1but that id
  • Javascript函数变量突然变得未定义?

    这是最奇怪的事情 我的代码如下 function menuSwipe init dojo query div fill div container div menu div group ul forEach function item do
  • GridX启动后如何重新计算列宽?

    根据文档 https github com oria gridx wiki Create the Simplest Gridx https github com oria gridx wiki Create the Simplest Gri
  • 使用 Ajax 和 Dojo 轮询服务器

    我在用着道场xhrPost http api dojotoolkit org jsdoc 1 2 dojo xhrPost发送 Ajax 请求该调用由一个包装function sendRequest 我现在要连续 每 3 秒 向服务器发送相
  • 如何在dojo中查询对象类型?

    我们可以使用 dojo query 来获取基于 CSS 选择器的某些元素 但是我们如何查询对象类型呢 比如获取页面上所有的TextBox元素然后使用dojo connect绑定一个函数 这并不完全支持 但据我所知 有两种方法可以做到这一点
  • 设置查询以搜索 dojo 数据网格的所有字段

    我有一个包含多个字段的 Dojo DataGrid 我目前正在将查询设置为一次搜索一个字段 如下所示 grid setQuery name Bob ignoreCase true 但是我希望查询能够立即搜索所有字段 例如 假设我有三个标题为
  • dojo 1.7 AMD 框架有什么好处?

    我一直在阅读有关 dojo 1 7 加载程序如何使用 AMD API 框架的内容here http dojotoolkit org blog learn more about amd and here too http livedocs d
  • 如何使用Dojo动态添加div?

    我有以下静态 div div div 我想使用 dojo 在 div1 中动态添加一个 id 为 div1 1 的 div 我该怎么做 您可以仅使用 Dojo Base 来完成此操作 如果您使用 trunk 或 Dojo 1 3 则无需包含
  • 从用户硬盘浏览并选择文件在 IE 中给出未定义

    当我使用输入按钮浏览用户计算机上的文件时 它适用于 FF IE9 和 Chrome 但是当我将文件传递给 IE9 中的 JS 函数时 我得到了未定义的结果 而它在 FF 和 Chrome 中工作得很好
  • Dojo 对话框 onEnd() 动画异常

    我在动画序列期间遇到 Dojo Dijit Dialog hide 方法的问题 我正在使用带有 Tundra 主题的 Dojo 1 7 我的对话框中有一个取消按钮可以关闭对话框 var global welcome new Dialog i
  • 如何在 dojo 数据网格中显示复选框?

    如何在 dojo 数据网格中显示复选框 我建议将 cellType 设置为 dojox grid cells Bool 而不是格式化程序 格式化程序为您提供了很大的自由 但也有责任从所有复选框 针对所有行 收集数据 像这样的结构条目应该可以
  • Dojo Dijit 对话框相对位置。是否可以?

    我想将 Dojo 的 Dijit Dialog 相对于我的 html 元素之一定位 是否可以 如果是 如何 目前它总是在视口中间显示对话框 任何人都可以帮助我解决此事吗 Thanks 阿玛尔4金图 我这样做的另一种方法 不是很好 因为我重写
  • 使用 Dojo 从跨域的 ReST 服务检索 XML 数据

    我正在尝试为 ReST 应用程序编写一个基于浏览器的 Javascript 客户端 该应用程序使用 XML 进行响应 所以看来 JSONP 是不可能的 我正在尝试使用检索数据dojo io script get但传递给回调函数的参数是一个对
  • dojo 中的状态服务器端过滤

    我正在 dojo 1 10 版本的增强网格中进行服务器端过滤 Here https dojotoolkit org reference guide 1 10 dojox grid EnhancedGrid plugins Filter ht
  • CDN 上的 Dojo 与自己安装的 Dojo

    我使用了相当多的 Dojo 但迄今为止我仅通过包含来自 AOL Google 等 CDN 来使用它 托管 Dojo 副本而不是通过 CDN 使用它是否有优势 我没有太多需要改变代码库 但我想还有其他优点 缺点 通过托管您自己的 Dojo 环
  • 如何使用基本身份验证发出 dojo.request.xhr GET 请求

    我查看文档Dojo v 1 9 请求 xhr http dojotoolkit org reference guide 1 9 dojo request xhr html dojo request xhr我找不到包含基本身份验证的示例 如何
  • 错误:尝试使用 id==grid1 注册小部件,但该 id 已注册

    我目前正在开发我的个人网站我对我的网站的一部分有一个偏见 即避免重复代码 这个视图我有一个 dojox grid datagrid 我可以在同一页面中调用此视图两次 ruban phtml 问题是我单击 1 个按钮 这是该视图 部分视图 的
  • 在node_modules/dojo/dojo.js的resolveDepMaps()中出现“TypeError: deps.map is not a function”

    我一直在更改我的组织的底层基础设施 以将我们的自动化测试从使用单独的 Web 服务器在浏览器客户端中运行切换到在测试运行程序 实习运行程序 中运行 在测试运行器环境中 一切进展顺利 我解决了很多问题 但随后繁荣起来 有人删除了一个新的单元测

随机推荐