форма не будет отправлять данные в ie8 - PullRequest
0 голосов
/ 05 марта 2012

На моей странице есть форма с одним вводом текста и одним вводом, которая отправляет информацию в скрипт php. Пользователи могут отправить форму, нажав «ввод» на клавиатуре или нажав кнопку «Отправить».

В IE9 и любом другом браузере пользователь может нажать «ввод» или нажать кнопку «Отправить», и все работает нормально, но в IE 8, если пользователь нажимает кнопку «Отправить», он работает нормально, но если он нажимает «Ввод» форма не отправляет информацию.

Форма открывает новую вкладку, так что я знаю, что форма отправляется, когда пользователь нажимает «ввод», просто информация не отправляется на новую страницу в IE8.

У кого-нибудь есть предложения?

Спасибо!

Код:

<form action="/search.php" method="post" onsubmit="location.reload(true)" target="_blank" name="myform">
    <table style="width: 100%; min-width: 728px; margin: 150px 0px 170px 0px; text-align: center;">
        <tr>
            <td valign="middle"><img alt="Logo" src="vivvulogo.png" /><br />
            <input maxlength="256" name="query" id="query" style="width: 400px; height: 25px; font-size: medium;" type="text" />
            <input name="submit" style="height: 30px; width: 120px; height: 30px; font-size: medium; background-color: #CCCCCC; border-style: solid; border-color: #999999; border-width: 1px; vertical-align: top;" type="submit" value="Search" /><br />
             </td>
        </tr>
    </table>
</form>

Ответы [ 2 ]

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

Попробуйте использовать

target="_self" 

вместо

target="_blank"

Надеюсь, это сработает.

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

Если вы используете тег кнопки, нажатие клавиши ввода не отправит форму ...

Скрытие кнопок отправки с помощью display: none, размещение их за пределами страницы, скрытие их внутри переполнения: скрытый или любой другой метод также нарушит функцию ввода-отправки.

Если форма скрыта, когда страница загружается и отображается с использованием JavaScript, ввод для отправки также будет прерван.

Похоже, что Internet Explorer сканирует страницу во время загрузки и выясняет, какие кнопки отправки видны, а затем добавляет функцию ввода для отправки к этим формам.

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

function addInputSubmitEvent(form, input) {
    input.onkeydown = function(e) {
        e = e || window.event;
        if (e.keyCode == 13) {
            form.submit();
            return false;
        }
    };
}

window.onload = function() {
    var forms = document.getElementsByTagName('form');

    for (var i=0;i < forms.length;i++) {
        var inputs = forms[i].getElementsByTagName('input');

        for (var j=0;j < inputs.length;j++)
            addInputSubmitEvent(forms[i], inputs[j]);
    }
};

Если вы ищете решение jQuery ...

$(function(){
    $('input').keydown(function(e){
        if (e.keyCode == 13) {
            $(this).parents('form').submit();
            return false;
        }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...