2010-11-23 80 views
1

我需要使用javascript隱藏文本輸入字段。 IE(安全問題)中將其類型屬性更改爲隱藏不起作用。如何使用javascript隱藏HTML輸入字段

什麼是最好的方法來做到這一點?

注意:不能假定jQuery或其他庫。

回答

1

我假設你必須根據表單中變化的條件動態地顯示和隱藏文本字段,否則你只需要將其設置爲<input type="hidden"...開頭。

保持您的代碼顯示並隱藏該字段,但也捕獲onsubmit事件。

在提交處理程序中,通過document.getElementById(...)(或訪問document.forms[i])獲取您的文本字段,並檢查它是否隱藏。

如果隱藏,創建一個<input type="hidden" ...>領域一個新的DOM節點和節點添加到形式,可能是通過myform.appendChild(...)。您必須將其命名爲您的服務器端代碼所需的名稱。將隱藏文本字段的內容複製到新創建的type = hidden字段中,然後從提交處理程序返回,從而允許標準提交繼續。

你也只是取消隱藏在提交的文本字段,但是你必須將它移到「關屏」也或者用戶會看到它再次出現時提交處理。

0

在將它附加到DOM之前,您可以更改它的唯一方法。您可以製作一個新元素,然後用它替換當前的元素。

查看replaceChild和createElement,因爲您想要手動執行DOM腳本。我假設你知道該怎麼做。

編輯:據我所知,「隱藏」字段發送。你有沒有檢查他們是否?你也可以做position:absolute; left:-9999em;來抵消它們。

+0

Re`position:absolute` - 是的,但是它仍然保持Tab鍵順序。如果你也禁用它會阻止標籤,但仍然會提交時發送? – 2010-11-23 18:23:49

0

document.myform.myelement.style.display = '無'

作品即使在Internet Explorer的預期。

+0

然後該值不作爲表單提交的一部分提交 – Nir 2010-11-23 16:17:12

0

嘗試將其封裝在div或span中,然後在想要隱藏它時將顯示樣式設置爲none,然後在需要時阻止(如果使用了div)或內聯(如果使用了跨度)展示它。

+0

我需要在表單提交中發送值。據我所知,所有瀏覽器都沒有發送隱藏的項目(input type ='hidden'除外) – Nir 2010-11-23 16:18:47

相關問題