функция отправки не вызывается - PullRequest
2 голосов
/ 10 октября 2011

Я оформлен в рупор, основанный на AJAX.http://businessgame.be/shoutbox.php

Сценарий отлично работает в Google Chrome, но другие браузеры работают не так, как я ожидаю.

Чтобы выкрикнуть новое сообщение, существует форма, которой принадлежит поле ввода текста.,При нажатии клавиши ввода форма отправляется, поэтому я пропустил кнопку отправки, поскольку достаточно нажать клавишу ввода.

<form method="POST" action="" onsubmit="javascript: return shout();" enctype="multipart/form-data">
<input type="text" style="width: 100%;" name="txtShout" id="txtShout" maxlength="600" autocomplete="off" title="Shout!" placeholder="Shout!">
</form>

Функция крика выглядит следующим образом:

function shout() {
alert("test");
        // Post shout and clear textField
        if(getLength("txtShout")) {
            AjaxUpdate("./includes/shout.php?message=" + getItemValue("txtShout"), refreshShoutBox);
            setItemValue("txtShout", "");
        }

        // Stop submit
        return false;
    }

Обычно,скрипт должен вызывать функцию крика, AJAX отправит запрос на добавление крика, а затем вернет false, чтобы форма не отправлялась.

Но во всех браузерах, кроме Google Chrome, форма все равно отправляется.Я вставил в функцию alert (), чтобы проверить, была ли она вызвана или ошибка кодирования, но предупреждение не отображается.

1 Ответ

1 голос
/ 10 октября 2011

По какой-то причине я не смог заставить функцию onsubmit работать в других браузерах.Вместо того, чтобы отчаянно пытаться исправить это, решил пойти по другому пути.Теперь я просто добавил слушателя в текстовое поле, чтобы проверить, нажата ли клавиша, была ли это клавиша ввода, и затем вызвать эту функцию.

Это, похоже, сработало, но все равно пришлось удалить форму, потому что иначеоно будет отправлено ^^.

Так что теперь я получил что-то вроде этого:

function shoutEnterListener() {
    // Get object
    var domObject = document.getElementById("txtShout");

    // Get shoutbox html code
    if(domObject) {
        domObject.onkeydown = shoutEnter;
        domObject.onkeypress = shoutEnter;
    }
}

function shoutEnter(e) {
    var keyCode;

    // Check which key has been pressed
    if (window.event) {
        keyCode = window.event.keyCode;
    } else {
        keyCode = e.which;
    }

    // If enter, shout!
    if (keyCode == 13) {
        shout();
    }
}

shoutEnterListener () вызывается в функции init.Это также доказывает, что не было никакой ошибки кодирования, а только функция вообще не вызывается.

Если вы все еще найдете решение предыдущей проблемы, дайте мне знать, потому что это немного утомительно иинтенсивный код.

...