【发布时间】:2012-02-17 23:57:37
【问题描述】:
我有一个表单设置,但出于某种原因,提交表单的 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 数据的情况下使用失败,那么有什么好的替代方案/解决方法?
【问题讨论】:
-
能贴出生成的源码吗?
-
各个地方的一些
return false;表达式会阻止您的表单提交。 -
事件委托我的朋友...avoid inline event registration
-
此外,发布来源的首选来源是您选择的任何安全服务。只要您不发布数百行代码,我认为您就很好。
标签: php javascript jquery parameter-passing