我有一个表单设置,但是出于某种原因,提交表单的JS在Chrome中有效,但在IE9或Safari中不起作用。有趣的是,在Chrome中,“提交”按钮可以正常工作,所有信息都不会传递。

这是我的提交按钮-

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


这就是它所谓的JS

// 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)) {
        submitForm();
    } else {
        $("#result").text(email + " is not a valid email.");
        $("#result").css("color", "red");
}
return false;
}
$("form").bind("submit", validate);


对于我的问题的第二部分,可能与JS问题无关,也可能与之无关:

echo $POST['satisfaction'];
echo $POST['user_email'];
echo $POST['comments'];
if(isset($POST['user_email'])){
    echo 'true';
} else {
    echo 'false';
}


如果您想更好地浏览页面,我正在编辑here is a link to jsfiddle

编辑

根据Marco的要求,我从“提交”按钮周围删除了链接,并将onClick事件放置在实际按钮本身上。这绝对解决了IE和Safari的问题。现在,我剩下的问题/担忧是为什么POST数据无法正确传递到下一页。

Here is the complete source with George requested.-index.php

Page source gets passed to-feedback-accept.php

还要说/张贴,将StackOverflow张贴到源的首选站点是什么?

为了回应Brian的评论,如果在不破坏POST数据的情况下无法使用失败,那么什么是一个很好的替代方案/解决方法?

最佳答案

快速浏览一下,我会说您在这里存在功能冲突。另一方面,在设计Submit Type时,您是在告诉浏览器将提交表单(执行操作),另一方面,该表单位于调用JS函数的链接中。如果要在JS中制造提交,请尝试考虑不使用“提交类型”,并查看其是否更正常。
您也可以尝试将链接替换为表单标签中的简单“ onSubmit”,然后从那里调用JS函数。这样,当浏览器识别出用户点击了提交按钮时,他会根据需要调用JS函数,如果该函数返回true,则浏览器将允许提交。

关于php - 提交按钮在IE/Safari中不起作用,在Chrome中有效,但表单信息未传递,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8991892/

10-11 22:51
查看更多