我在我的頁面上有2 <fieldset>
s,但其中一個應根據用戶的選擇禁用所有元素。如何禁用jQuery中的字段集中的所有元素?
該字段集包含文本輸入,選擇和鏈接。有沒有辦法禁用所有這些,而不是逐一禁用它們?
我在我的頁面上有2 <fieldset>
s,但其中一個應根據用戶的選擇禁用所有元素。如何禁用jQuery中的字段集中的所有元素?
該字段集包含文本輸入,選擇和鏈接。有沒有辦法禁用所有這些,而不是逐一禁用它們?
如何使用兒童選擇器?
$("#myfieldeset").children().attr("disabled", "disabled");
還可以過濾孩子的選擇:
$("#myfieldeset").children("a,input");
假設你要禁用任何輸入元素,然後將下面的代碼應該做你所需要的字段集設置一個類=「disableMe」 :
$('fieldset.disableMe :input').attr('disabled', true)
如果由於某種原因,你不能添加一個ID字段集(這通常是首選),你總是可以做到這一點,以隱藏所有它的子元素:
$('fieldset:first > *').attr('disabled','disabled');
你爲什麼不只是使用:
$("#myfieldeset").attr("disabled", "disabled");
它爲我工作。它很好地禁用了所有的兒童輸入。
編輯:請注意,禁用屬性只能應用於HTML5中的fieldset元素(請參閱merryprankster註釋)。奇怪的是,它可以與其他瀏覽器一起使用,而不僅僅是Firefox和Opera,例如Chrome和Internet Explorer(經過測試的IE7和IE8)。
試試這個代碼片段:
$("#myfieldeset").attr("disabled", "disabled");
除了別人發佈:
使用.prop()
而不是.attr()
:
$('#myfieldset').prop('disabled',true)
它是相對於DOM更正確。
它似乎並沒有很好地驗證。 firefox和chrome都不允許我在禁用的字段集中提交未填充的「必需」輸入的表單,但不要提供關於如何填寫表單的任何說明。
您可以設置fieldset
的disabled
屬性。
MDN來自:
如果此布爾屬性被設置,即是它的後代,除了它的第一任選元素的後代的表單控件,被禁用的,即,不可編輯。他們不會收到任何瀏覽事件,如鼠標點擊或與焦點相關的事件。通常瀏覽器顯示這樣的控件爲灰色。
HTML:<fieldset disabled> ... </fieldset>
JQuery的:$('#myfieldset').prop('disabled', true);
JS:document.getElementById('#myFieldset').disabled = true;
重要提示:這不正確的Internet Explorer由於一對夫婦的錯誤工作,但效果很好只是在其他地方(包括邊緣)。
TL;博士:文本和文件輸入不正確禁用,用戶仍然可以與他們進行互動
如果這是一個大忌,你需要進入字段集和這裏其他的答案中描述把disabled
它的後代。
謝謝!我使用了類似的東西,但是你的解釋對於我沒有做過的其他事情會很有用! :-) – AndreMiranda 2009-04-23 13:12:03
在jQuery 1.6,[它建議使用`.prop()`代替`.attr()`設置屬性的值](http://api.jquery.com/prop/#prop2 ),這可能是這樣的:`.prop(「已禁用」,真)` – 2013-01-24 05:53:07