Dojo: события Dojo Onblur - PullRequest
       24

Dojo: события Dojo Onblur

5 голосов
/ 12 января 2011

У меня есть настройка формы с помощью dojo 1.5.Я использую dijit.form.ComboBox и dijit.form.TextBox

. У Combobox есть значения, такие как "автомобиль", "велосипед", "мотоцикл", и текстовое поле должно быть прилагательным к Combobox.,Поэтому не имеет значения, что находится в Combobox, но если ComboBox действительно имеет значение, тогда что-то ДОЛЖНО быть заполнено в TextBox.Необязательно, если в ComboBox ничего нет, тогда в TextBox ничего не может быть, и это просто отлично.Фактически, если чего-то нет в Combobox, тогда в текстовом поле НЕ ДОЛЖНО быть ничего.

В обычном кодировании я просто использовал бы событие onBlur в текстовом поле, чтобы перейти к функции, которая проверяет, является лиComboBox имеет значение.В dojo я вижу, что это не работает ... Пример кода приведен ниже ...

Vehicle:
    <input dojoType="dijit.form.ComboBox"
      store="xvarStore"
      value=""
      searchAttr="name"
      name="vehicle_1"
      id="vehicle_1"
    />
 Descriptor:
<input type="text"
                dojoType="dijit.form.TextBox"
                value=""
                class=lighttext
                style="width:350px;height:19px"
                id="filter_value_1"
                name="filter_value_1"
                />

Моя первоначальная попытка состояла в том, чтобы добавить onBlur в тег дескриптора, но обнаружил, что это не 'т работа.

Как Dojo справляется с этим?Это через параметр dojo.connect?Несмотря на то, что в приведенном выше примере поле со списком имеет идентификатор «vehicle_1», а у текстового поля - идентификатор «filter_value_1», могут быть многочисленные поля со списком и текстовые поля, которые нумеруются последовательно вверх.(vehicle_2, vehicle_3 и т. д.)

Буду признателен за любые советы или ссылки на ресурсы.Джени

Ответы [ 2 ]

7 голосов
/ 12 января 2011

Чтобы добавить событие onBlur, вы должны использовать dojo.connect ():

dojo.connect(dojo.byId("vehicle_1"), "onBlur", function() { /* do something */ });

Если у вас есть несколько входов, к которым вам нужно подключиться, рассмотрите возможность добавления пользовательского класса для тех, которые нужно размытьи используя dojo.query для подключения ко всем из них:

Vehicle:
    <input dojoType="dijit.form.ComboBox"
      store="xvarStore"
      class="blurEvent" 
      value=""
      searchAttr="name"
      name="vehicle_1"
      id="vehicle_1"
    />

dojo.query(".blurEvent").forEach(function(node, index, arr) {
      dojo.connect(node, "onBlur", function() { /* do something */ });
  });

В функции, которая передается в dojo.connect, вы можете добавить некоторый код, чтобы вырезать число на конце и использовать его для ссылкикаждый фильтр_значение_ * вход для проверки.

dojo.connect ()

Combobox документирование

4 голосов
/ 12 января 2011

onBlur, кажется, прекрасно работает даже в виджетах, объявленных в HTML. Вот очень простой пример:

http://jsfiddle.net/kfranqueiro/BWT4U/

(Откройте Firebug / Инспектор webkit / Инструменты разработки IE8 для просмотра сообщений console.log.)

Тем не менее, для более идеального решения этого вопроса вам также могут быть интересны некоторые другие виджеты ...

Надеюсь, это поможет вам начать.

...