【问题标题】:dijit button not firing first timedijit 按钮第一次没有触发
【发布时间】:2015-10-01 17:45:21
【问题描述】:

我有一个添加到 dijit/layout/ContentPane 的 dijit/form/button。然后将 dijit/layout/ContentPane 放置在 dijit/form/DropDownButton 中。当我单击 dijit/form/button 时,它不会第一次触发。对于此示例,我只是让按钮单击生成一个警报框,其中包含输入到 ValidationTextBox 中的值。我在其他论坛上看到了一些关于此主题的讨论,表明 onMouseDown 事件或焦点事件正在取消第一个 onClick 事件。测试这些事件何时加载的最佳方法是什么,或者我只是在 dijit/form/button 的代码中遗漏了什么?谢谢你看。

dojoConfig = {
  parseOnLoad: true
}

require(["dijit/form/DropDownButton", "dijit/MenuItem", "dijit/layout/ContentPane", "dijit/form/ValidationTextBox", "dijit/form/Button"],
  function(DropDownButton, DropDownMenu, ContentPane, ValidationTextBox, Button) {

    var parcelsearchCP = new ContentPane({
      id: 'parcelsearchCP',
      tabindex: 0
    });

    var parcelsearchInput = new ValidationTextBox({
      title: "Enter Parcel ID",
      name: "parcelvalue",
      id: "parcelsearchInput",
      placeholder: "<enter 8 digits>",
      regExp: "^[0-9]*$"
    });

    var searchBtn = new Button({
      //iconClass: "mySearchIcon",
      name: "searchme",
      label: "click me"
    });
    searchBtn.startup();
    dojo.place("<div>Enter Parcel ID: </div>", parcelsearchCP.containerNode);
    dojo.place(parcelsearchInput.domNode, parcelsearchCP.containerNode);
    dojo.place(searchBtn.domNode, parcelsearchCP.containerNode);

    var button = new DropDownButton({
      label: "hello!",
      name: "programmatic2",
      dropDown: parcelsearchCP,
      id: "progButton"
    }, "dropDownButtonContainer").startup();

    dojo.connect(searchBtn, "onClick", function() {
      var boxentry = dijit.byId("parcelsearchInput");
      if (boxentry.value !== "" || parcelsearchInput.isValid() === true) {
        alert(boxentry.value);

      } else {
        alert("Please enter a valid 8 digit number and re-submit.");
      }

    });


  });
<link href="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dijit/themes/claro/claro.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>

<body class="claro">
  <div id="dropDownButtonContainer"></div>
</body>

【问题讨论】:

  • 我在 Chrome、FF 和 IE 11 中首次单击时会显示警报...您在哪个浏览器中看到问题?另外,您实际使用的是什么版本的 Dojo?在此示例中,您引用的是 1.10 的代码,但引用的是 1.5 的样式...
  • 嗨,Ken,我正在使用 Chrome 版本 45.0.2454.99 进行测试,但我还需要在 FF 和 IE 中使用此功能。这段代码实际上是 Javascript/HTML 5 模板的子集,由第三方供应商提供,他们自己的 api 基于 Dojo 1.10.4 构建。我基本上是在尝试向现有应用程序添加一个“小部件”,并与应用程序的现有编码标准保持一致。我意识到这不再是真正的做法,这几乎是 Dojo 标准的遗留编码方法。我希望我可以重新开始,但目前这不取决于我。

标签: javascript dojo dijit.form dijit.layout


【解决方案1】:

事实证明,我所要做的就是将事件从“onClick”更改为“onMouseDown”,并在按钮连接语句中添加一个 searchBtn.focus()。这似乎奏效了。感谢您的宝贵时间!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多