我們已經有了一些這樣的代碼已經工作了一段時間。它用於提交html表單的按鈕,除非附近的文本框爲空。我已經從我們的代碼中直接獲取了這段代碼;我已經更改了字段的內容,但沒有刪除任何內容。JavaScript返回false不停止表單提交
<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)爲空,它會提示警報,但在用戶單擊警報上的OK按鈕後,仍會提交表單。
當我在整個頁面上做了一個查看源並複製到本地時,它看起來很完美;它要麼提交表單,要麼提出警報,然後拒絕提交。
我最好的當前(但仍然糟糕)的理論是,其中一個包含的JavaScript庫做了一些有趣的事情,這將解釋爲什麼它在真實站點上失敗,但是當我將它複製到本地時失敗(因爲我沒有抓住它所導入的各種庫)。這是合乎邏輯的,我也會通過抓取庫來檢查它,但是我很難想象這些庫可能會如何解決這個問題(或原因)。 ..他們只是正常的實用程序庫,如jQuery,實用功能等。
那麼,有沒有人有關於在這裏會發生什麼的理論?
如果您有多個庫,請嘗試逐個添加它們以確定哪一個與您的表單混淆。 – 2011-02-09 20:38:52
`document.all` ?!你爲什麼選擇IE 4? – Quentin 2011-02-09 20:39:30
@Scott:這是我的想法,現在我在做什麼......但我很難想象爲什麼會有一個圖書館以某種方式攔截這個,允許警報通過,但取消返回錯誤。但也許其他事情正在發生......(顯然我錯過了*某事* ...) – Beska 2011-02-09 20:40:45