2012-12-14 50 views
1

我有一個頁面,其中有一個複選框被禁用/重新啓用javascript按鈕單擊。如果我從不禁用複選框,那麼它的值是正確的POST,但是如果我禁用複選框,即使它沒有值發佈(即使在選中時發佈爲「name =」)。我通過螢火蟲檢查了POST值。HTML/JavaScript已禁用,然後重新啓用複選框正在POSTED

爲什麼它的行爲如此?我錯過了什麼嗎?我已經閱讀過禁用控件未發佈的地方,那好,但是當點擊提交時這個控件不會被禁用。

我用更復雜的安裝程序來測試這個ASP.NET,但本質上這是問題的核心。瀏覽器是FF最新的。

我發現非常類似的問題,但是沒有答案: disabled control being reenabled but still not posting back contents to server

+0

我可以看到您的aspx標記嗎? –

+1

確實禁用的表單元素沒有發佈。但是如果你在提交表單之前重新啓用它,它肯定會被髮布(**如果選中**,如果沒有選中,*沒有任何內容發佈到複選框)。對我而言,FF的最新版本確實如此:http://jsbin.com/oribej/1 –

回答

0

的錯誤似乎是在我提交的數據的解讀。正如TJ正確指出的那樣(它將我引向解決方案,所以非常感謝你!)如果複選框未被選中,則提交NOTHING而不是「cbName =」,正如我的情況。

真正的問題(我之所以提出這個問題)是因爲ASP.NET沒有識別複選框的回發。但是,這是由於不同的原因:我的JavaScript禁用功能也this.value =''。但是,如果你這樣做了一個asp:複選框,那麼它的值(狀態)不會被識別爲回發,並且複選框總是顯示爲未在服務器上被選中。 ASP.NET必須具有cbName = on才能識別回發的檢查狀態。

至少我今天學到了一些東西。希望這可能也會在未來幫助其他人。

+0

嗯,好的,我的答案可能無關緊要。我會把它留在那裏以防別人幫忙。 – robertc

0

您究竟如何禁用並重新啓用複選框? disabled attributeboolean attribute。屬性的存在而不是值意味着它被禁用。所有這些複選框都被禁用:

<input type="checkbox" name="cheese" disabled> 
<input type="checkbox" name="cheese" disabled="disabled"> 
<input type="checkbox" name="cheese" disabled=""> 
<input type="checkbox" name="cheese" disabled="true"> 
<input type="checkbox" name="cheese" disabled="false"> 
+0

謝謝,它是一個有效的點,但是我相信我使用JS this.disabled = true或false正確地啓用/禁用了複選框。 – NeverStopLearning