Кнопка отправки с использованием jQuery не работает в IE9 и FF9 - PullRequest
1 голос
/ 27 января 2012

Эта кнопка отправки работает как в Safari, так и в Chrome, но не в IE9 или FF9.

Кнопка отправки -

 <img type="submit" src="lib/send_feedback.jpg" border="0" class="feedback-submit-img" onClick="javascript: validate(); return false;"/>

Похожие jQuery -

// Submit form to next page
function submitForm() {
//   document.forms["feedbackform"].submit();
    document.feedbackform.submit();
}
// Submit form and validate email using RFC 2822 standard
function validateEmail(email) { 
    // Modified version original from: http://stackoverflow.com/a/46181/11236
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
}
// Return true if email field is left unchanged
function originalText(email){
    var defaultMsg;
    defaultMsg = "Enter your email address (optional)";
    if(defaultMsg == email){
        return true;    
    }
    return false;
}
// Verify or decline with error message
function validate(){
    $("#result").text("");
    var email = $("#email").val();
    if ((validateEmail(email)) || originalText(email)) {
        w.value = screen.width;
        h.value = screen.height;
        submitForm();
    } else {
        $("#result").text(email + " is not a valid email.");
        $("#result").css("color", "red");
    }
    return false;
}
$("form").bind("submit", validate);

Кроме того, стоит поменять кнопку отправки на более простую, чтобы она отправляла скрытые поля, которые w и h должны обновлять, не заполнены.

Вот весь код и CSS

1 Ответ

3 голосов
/ 27 января 2012

type не является допустимым атрибутом тега img: https://developer.mozilla.org/En/HTML/Element/Img

Вместо этого я думаю, что вам нужен тег <input type="image" />: https://developer.mozilla.org/en/HTML/Element/Input.

The <img type="submit" /> у меня тоже не работал, но с помощью <input type="image" /> did: http://jsfiddle.net/HXrNb/1/

Вы можете просто привязать функцию validate() к событию submit для формы:

$('form').on('submit', function () {
    ...
    if ((validateEmail(email)) || originalText(email)) {
        ...
        return true;
    } else {
        ...
        return false;
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...