【问题标题】:Submit button using jQuery not working in IE9 and FF9使用 jQuery 提交按钮在 IE9 和 FF9 中不起作用
【发布时间】:2012-01-28 02:32:20
【问题描述】:

此提交按钮适用于 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 应该更新的隐藏字段时,它的价值。

Here is the entire codethe CSS

【问题讨论】:

    标签: javascript jquery html css cross-browser


    【解决方案1】:

    type 不是img 标签的有效属性:https://developer.mozilla.org/En/HTML/Element/Img

    相反,我认为你想要一个&lt;input type="image" /&gt; 标签:https://developer.mozilla.org/en/HTML/Element/Input

    &lt;img type="submit" /&gt; 对我也不起作用,但使用 &lt;input type="image" /&gt; 可以:http://jsfiddle.net/HXrNb/1/

    然后您可以将validate() 函数绑定到表单的submit 事件:

    $('form').on('submit', function () {
        ...
        if ((validateEmail(email)) || originalText(email)) {
            ...
            return true;
        } else {
            ...
            return false;
        }
    });
    

    【讨论】:

    • 噢!就是这样,非常感谢您的帮助。这种疏忽绝对是问题所在,我想 Chrome 和 Safari 正在纠正/补偿这个错误。再次感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 2017-02-06
    • 2013-07-06
    • 2017-10-21
    • 2013-04-09
    相关资源
    最近更新 更多