Проверка элементов ввода в Firefox с помощью JavaScript - PullRequest
0 голосов
/ 28 ноября 2009

Я разрабатываю расширение, которое прослушивает события нажатия на элементах.

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

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

Ответы [ 2 ]

1 голос
/ 28 ноября 2009

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

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 голосов
/ 03 декабря 2010

Для # 1: удобно использовать селектор jQuery ": input", например:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...