簡體   English   中英

JavaScript返回false不會停止表單提交

[英]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[&quot;aTextInputFormFieldId&quot;] : 
        document.getElementById(&quot;aTextInputFormFieldId&quot;); 
        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是不夠的。 根據您要完成的工作,您可能需要查看preventDefaultstopPropagation

使用Internet Explorer時,請注意事件對象沒有傳遞給函數,而是可以在window.event找到。

更新 Internet Explorer可能希望您使用event.returnValue = false; 代替。 您的情況是window.event.returnValue = false; 定位IE時。

祝好運

JavaScript協議鏈接必須為一行,即。 沒有新行。

onclick="javascript:var obj = document.all ? document.all[&quot;aTextInputFormFieldId&quot;] :document.getElementById(&quot;aTextInputFormFieldId&quot;); if(obj.value.length == 0){alert('It is 0!');       return false;};" 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM