2009-11-28 4 views
0

Я разрабатываю расширение, которое прослушивает клики по событиям на элементах.Проверка элементов ввода в Firefox с помощью JavaScript

Теперь у меня есть два вопроса:

  1. Есть ли удобный способ обнаружить элемент, является ли входной элемент? Например input, textarea в HTML и textbox в XUL.
  2. Если пользователь нажал на элемент ввода, как получить позицию, в которую щелкнул пользователь? Например, есть элемент <input>, его значение установлено на blah, и пользователь нажал между 'l' и 'a', как я могу получить индекс (в данном случае это 2)?

ответ

1

Каждое событие имеет некоторые данные, которые передаются вместе с ним в параметре события. Вы можете сделать что-то вроде этого, чтобы выяснить, что нажал на:

function clickFun(event){ 
    if (event.target.nodeName == "INPUT") { 
     var type = event.target.getAttribute('type').toLowerCase(); 
     if (type == 'text') { 
      console.log('text input'); 
     } else if (type == 'checkbox') { 
      console.log('checkbox'); 
     } 
    } else if (event.target.nodeName == "TEXTAREA") { 
     console.log('text area'); 
    } 
} 
thing.onclick = clickFun; 

Вы можете сделать это с помощью JQuery, которая дает вам несколько простых функций, чтобы проверить информацию об элементах. До вас, если вы хотите попробовать javascript framework.

$(':input').click(function(event){ 
    var $this = $(this); 
    if ($this.is(':text')) { 
     console.log('text input'); 
    } else if ($this.is(':checkbox')) { 
     console.log('checkbox'); 
    } else if ($this.is(':textarea')) { 
     console.log('textarea'); 
    } 
}); 

Чтобы получить позицию курсора при нажатии на текстовое поле или область попробуйте проверить эту статью:

http://www.dedestruct.com/2008/03/22/howto-cross-browser-cursor-position-in-textareas/

0

Для # 1: это удобно использовать JQuery «: вход»селектор, как это:

if ($(node).is(":input")) 
    alert("It's an input element!"); 

Но в целом, я не думаю, что есть простой способ сказать элементов XUL. Перечисление имен узлов было бы самым простым решением, о котором я мог думать.

Смежные вопросы