2015-10-01 3 views
0

У меня есть кнопка dijit/form /, которая добавляется в dijit/layout/ContentPane. Затем dijit/layout/ContentPane помещается в dijit/form/DropDownButton. Когда я нажимаю кнопку dijit/form /, она не запускается в первый раз. В этом примере у меня просто щелчок кнопки генерирует окно предупреждения со значением, введенным в ValidationTextBox. Я уже обсуждал эту тему на других форумах, предлагая, чтобы событие onMouseDown или фокусное событие выдавало первое событие onClick. Каков наилучший способ проверить, когда эти события были загружены или я просто что-то пропустил в коде для dijit/form/button? Спасибо, что посмотрели.кнопка dijit не срабатывает в первый раз

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>

+1

Он показывает предупреждение при первом нажатии в Chrome, FF и IE 11 для меня ... В каком браузере вы видите проблему? Кроме того, какую версию Dojo вы используете на самом деле? Вы ссылаетесь на код 1.10, но стили 1.5 в этом примере ... –

+0

Привет, Кен, я использую версию Chrome 45.0.2454.99 для тестирования, но мне нужно будет иметь эту функциональность и в FF и IE. Этот код на самом деле является подмножеством шаблона Javascript/HTML 5, предоставляемого сторонним поставщиком со своим собственным api, построенным на Dojo 1.10.4. Я в основном пытаюсь добавить «виджет» к существующему приложению и остаюсь в соответствии с существующими стандартами кодирования приложения. Я понимаю, что на самом деле это не так, как это делается больше, и это в значительной степени основополагающая методология кодирования по стандартам Dojo. Хотелось бы, чтобы я начал, но это не для меня на данный момент. – gingerrc4

ответ

0

Ну, как выясняется, все, что я должен был сделать изменить событие с «OnClick» до «OnMouseDown» и добавить searchBtn.focus() в кнопке подключения заявление. Казалось, это трюк. Спасибо за ваше время!