[英]JavaScript return false not stopping form submission
我們已經有一些類似的代碼已經使用了一段時間。 用於提交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)為空,它將顯示警報,但是無論如何,只要用戶單擊警報上的“確定”按鈕,就提交表單。
當我在整個頁面上創建視圖源並將其復制到本地時,它似乎運行良好; 它要么提交表單,要么發出警報,然后拒絕提交。
我目前最好的(但仍然很糟糕)的理論是,其中包含的JavaScript庫之一做的很有趣,這可以解釋為什么它在真實站點上失敗,但是當我在本地復制時卻失敗了(因為我沒有抓住各種庫)這是合乎邏輯的,我也將通過抓取這些庫來進行檢查,但是我很難想象這些庫可以做什么來弄亂(或為什么)...它們'。只是普通的實用程序庫,例如jquery,實用程序功能等。
那么,有沒有人對這里可能發生的事情有一個理論?
您提到了jQuery,如果jQuery通過它的submit()
處理函數執行任何操作,它就會干擾您的表單。 檢查jQuery.submit()
是否綁定到您的表單。
通常,當使用純JavaScript時,僅返回false是不夠的。 根據您要完成的工作,您可能需要查看preventDefault
或stopPropagation
使用Internet Explorer時,請注意事件對象沒有傳遞給函數,而是可以在window.event
找到。
更新 Internet Explorer可能希望您使用event.returnValue = false;
代替。 您的情況是window.event.returnValue = false;
定位IE時。
祝好運
JavaScript協議鏈接必須為一行,即。 沒有新行。
onclick="javascript:var obj = document.all ? document.all["aTextInputFormFieldId"] :document.getElementById("aTextInputFormFieldId"); if(obj.value.length == 0){alert('It is 0!'); return false;};"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.