我们有一些这样的代码已经工作了一段时间。它是一个提交html表单的按钮,除非附近的文本框为空。我已直接从我们的代码中获取此代码段;我已经更改了字段的内容,但没有删除任何内容。
<input
type="image"
name="inputName"
id="inputId"
src="someImage"
alt="altText"
onclick="
javascript:var obj = document.all ? document.all["aTextInputFormFieldId"] :
document.getElementById("aTextInputFormFieldId");
if(obj.value.length == 0)
{
alert('It is 0!');
return false;
};"
style="someStyle" />
(原始代码全部在一行,但为清楚起见,此处添加了换行符。)
它似乎在Firefox中完美运行。但是在IE中,它以我无法理解的方式失败:如果输入字段(aTextInputFormFieldId)为空,它会发出警报,但在用户单击警报上的okay按钮后仍然提交表单
当我在整个页面上创建一个视图源并在本地复制它时,它似乎完美无缺;它要么提交表格,要么提出警报,然后拒绝提交。
我最好的当前(但仍然很糟糕)理论是,其中一个包含的JavaScript库正在做一些有趣的事情,这可以解释为什么它在真实网站上失败,但是当我在本地复制它时失败(因为我没有&#39;抓住它导入的各种库。)这具有逻辑意义,我也可以通过抓取库来检查它,但我很难想象这些库可以做什么弄乱这个(或者为什么)......它们只是普通的实用程序库,比如jquery,实用程序函数等。
所有人都有关于这里会发生什么的理论吗?
答案 0 :(得分:3)
你提到过jQuery,如果jQuery通过submit()
handler做任何事情,它可能会干扰你的表单。检查jQuery.submit()
是否与表单绑定。
通常在执行纯javascript时,返回false是不够的。根据您要完成的内容,您可能需要查看preventDefault
或stopPropagation
使用Internet Explorer时,请注意事件对象未传递给该函数,但可以在window.event
中找到。
<强>更新强>
Internet Explorer可能希望您使用event.returnValue = false;
。在您的情况下,在定位IE时为window.event.returnValue = false;
。
答案 1 :(得分:0)
Javascript协议链接必须是一行,即。没有新线。
onclick="javascript:var obj = document.all ? document.all["aTextInputFormFieldId"] :document.getElementById("aTextInputFormFieldId"); if(obj.value.length == 0){alert('It is 0!'); return false;};"