Firefox не передает значения из поля ввода текста в функцию JavaScript - PullRequest
0 голосов
/ 22 марта 2012

У меня проблема с передачей информации Firefox в функцию JavaScript. Следующий код работает нормально на Chrome, Safari и Opera. У него есть некоторые проблемы в IE9, но в целом он делает то, что должен.

Firefox, однако, просто игнорирует onchange и onclick с консолью, сообщающей «запрос не определен». Если есть способ обойти это или другой подход, я бы хотел знать.

<div class="viewstory_controls_content">
                Search
                <input type="text" id="query" onchange="javascript:submitForm('../scripts/php/search.php', 'search_results',query,'main')" name="query"></input>
                <button class="viewstory_search" onclick="javascript:submitForm('../scripts/php/search.php', 'search_results', query, 'main')">
                    <div class="viewstory_search_content">
                        Search
                    </div>
                </button>
            </div>

отправить запрос:

function submitForm(url, target, term, type) {
    // native XMLHttpRequest object
    term = term.value;
    url = url + "?term=" + term + "&type=" + type;
    alert("url:" + url + "\ntarget:" + target + "\nterm:" + term);
    document.getElementById(target).innerHTML = 'sending...';
    if (window.XMLHttpRequest) {

        req = new XMLHttpRequest();
        req.onreadystatechange = function() {
            jahDone(target);
        };
        req.open("GET", url, true);
        req.send(null);
    }
    else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = function() {
                submitFormDone(target);
            };
            req.open("GET", url, true);
            req.send();
        }
    }
}​

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Я думаю, это потому, что браузеры, которые поддерживают ваш скрипт, на самом деле ищут поле, атрибут name которого равен query (обратите внимание, я не уверен на 100% в этом).Насколько я знаю, это никогда не работало в Firefox.
Просто замените query в обработчиках событий на document.getElementById('query').В обработчике onchange input вы также можете использовать this вместо query.
Кроме того, не используйте javascript: во встроенных обработчиках событий.Это устарело.

0 голосов
/ 22 марта 2012

term - третий параметр, вы передаете запрос в вызов функции как переменная.Это нигде не определено.Передайте значение поля запроса

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