我正在尝试通过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和事件,它仍然删除了@无论
答案 0 :(得分:1)
其他因素导致您的问题。如果您取出javascript,“@”会在查询字符串中正确发送。 “VALIDATE_EMAIL”函数是否设置了INPUT字段的值?我的猜测是它正在IE中剥离它。
答案 1 :(得分:0)
@在URL中的主机名之前可以表示身份验证信息。我知道这一支持已经从IE中删除了一段时间,出于安全考虑,也许他们过度了。
参见例如http://gadgetopia.com/post/2027和http://www.ietf.org/rfc/rfc1738.txt的第3.1节。
在提交表单之前,您是否尝试过对其进行URL编码?
答案 2 :(得分:0)
好吧,我刚刚结束使用POST而且没有任何问题。由于伪安全原因,IE可能会过滤掉@。我确信有一个解决方法是使用GET进行电子邮件,但替代方案(POST)更容易,并且不需要任何黑客来解决。