IE не передает символ @ для ввода электронной почты в форме GET - PullRequest
3 голосов
/ 06 августа 2009

Я пытаюсь пропустить письмо через форму GET, но в IE он удаляет символ @ на странице с параметрами GET. Я использую событие onSubmit, но все, что они делают, это проверяют данные, прежде чем разрешить их отправку, они не затрагивают никакие значения формы.

<form name="quick" id="ex" action="order" autocomplete="off" method="GET" onsubmit="return validateQuickForm(this);">
<input id="eMail" value="" name="email" onblur="validateField(this, VALIDATE_EMAIL, false)" type="text">
....
<input src="/images/button.gif" value="Submit" alt="Submit" title="Continue to order form" type="image">
</form>

Допустим, я ввел user@example.org ..

Это должно перенаправить меня на

example.org/order/?email=user%40example.org

Но это перенаправляет меня на

example.org/order/?email=userexample.org

Отлично работает в Firefox ..

Вот функция javascript, на всякий случай:

function validateQuickForm(form) {
    var errors = new Array();
    if (VALIDATE_EMAIL(form.email) == false) 
        errors.push("That's not a valid email!");
    if (errors.length > 0) {
        var errorMsg = "Please fill out all fields correctly:";
        for(var i = 0; i < errors.length; i++)
            errorMsg += "\r\n-"+errors[i];
        alert(errorMsg);
        return false;
    }
    return true;
}

Кроме того, я удалил javascript и события, и он все равно удаляет @ независимо

Ответы [ 3 ]

1 голос
/ 07 августа 2009

Что-то еще вызывает вашу проблему. Если вы удалите свой JavaScript, «@» будет правильно отправлено в строке запроса. Функция VALIDATE_EMAIL когда-либо устанавливает значение поля INPUT? Я полагаю, что в IE его удаляют.

0 голосов
/ 07 августа 2009

Ну, я просто использовал вместо него POST, и с этим не возникло никаких проблем. IE, вероятно, отфильтровывает @ по причинам псевдобезопасности. Я уверен, что есть обходной путь, чтобы использовать GET для электронных писем, но альтернатива (POST) намного проще и не требует никаких хаков для обхода.

0 голосов
/ 06 августа 2009

@ перед именем хоста в URL может означать информацию аутентификации. Я знаю, что эта поддержка была удалена из IE некоторое время назад, в целях безопасности, возможно, они перестарались.

Смотри, например, http://gadgetopia.com/post/2027 и раздел 3.1 из http://www.ietf.org/rfc/rfc1738.txt.

Вы пытались явно URL-кодировать его перед отправкой формы?

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