ExtJS / Script # - Добавление события двойного щелчка к кнопке - PullRequest
1 голос
/ 19 января 2012

Создавая калькулятороподобное диалоговое окно, я заметил, что быстрое нажатие на кнопку в IE не запускает событие click дважды (Chrome / FF работает как положено), а скорее вызывает событие click, затемсобытие двойного щелчка.Экспериментируя с некоторым простым кодом, я, по сути, хочу продублировать это поведение:

<script language=javascript>
function minus(num)
{
  var i = document.getElementById('0001');
  if (i.value > 1)
  {
    i.value -= num;
    return true;
  }
}
</script>

<input type="button" onclick="minus(1);"  ondblclick="minus(1);" value="minus">
<input type="text" id="0001" name="0001" value=10>

Мне нужно сделать это в ExtJS 3.1, но мои усилия оказались в тупике.Вот код, который я пробовал:

Button btn = new Ext.Button(new ButtonConfig()
                            .text(text)
            .tooltip(tooltip)
                            .tooltipType("title")
                            .scope(this)
                            .handler(delgateFunction)
                            .x(x)
                            .y(y)
                            .tabIndex(_tabIndex++)
                            .width(width).height(height)
                            .ToDictionary());
btn.addListener("mouseenter", new EventHandler(mouseHandler));
btn.addListener("mouseover", new EventHandler(mouseHandler));
btn.addListener("mouseout", new EventHandler(mouseLeave));
if (Ext.isIE)
{
  //btn.on("dblclick", new EventHandler(DoubleClick));
  //btn.addListener("dblclick", new EventHandler(DoubleClick));
  //btn.addListener("ondblclick", new EventHandler(DoubleClick));
}

Ни одна из этих трех строк, похоже, не работает.Есть предложения?

Ответы [ 2 ]

0 голосов
/ 19 января 2012

г.Чжу привел меня к правильному ответу:

Events.AddEvent(_zeroBtn.getEl().dom, "dblclick", DoubleClickZero);
0 голосов
/ 19 января 2012

попробуйте следующее после рендеринга кнопки:

btn.el.on("dblclick", new EventHandler(DoubleClick));

Ext.Button сам по себе не имеет события "dblclick" (проверьте API), в то время как его базовый el (Ext.Element) имеет.

Полный образец:

new Ext.Button({id:'btn', text:'dblclick', renderTo:Ext.getBody() });
Ext.getCmp('btn').el.on('dblclick', function(){alert('db click');});
...