2012-02-26 45 views
-2

我想通過編輯此代碼來啓用並設置check = false?爲什麼我不能使用jQuery啓用和取消選中元素?

if (confirm('This widget will be removed, ok?')) { 
    $(​'table tr input[type=hidden]').filter(function() { 
     return $(this).val()​​​​​ == widgetId; 
    }).siblings('input[type=checkbox]').attr({disabled: true, checked: true}); 

我嘗試:

.siblings('input[type=checkbox]').removeAttr('disabled'); 

這。

.siblings('input[type=checkbox]').attr({disabled:false, checked: false}); 

但不成功


EDIT 1:

<table><colgroup><col title="process name"></colgroup> <tbody><tr><td><input name="rlv_mainservices$ctrl0$hf_id" id="rlv_mainservices_ctrl0_hf_id" value="91" type="hidden"> <input id="rlv_mainservices_ctrl0_chb_sys" name="rlv_mainservices$ctrl0$chb_sys" type="checkbox"> <span id="rlv_mainservices_ctrl0_lbl_main_sys">pro1</span> </td></tr></tbody></table><table><colgroup><col title="processname"> </colgroup><tbody><tr><td><input name="rlv_mainservices$ctrl1$hf_id" id="rlv_mainservices_ctrl1_hf_id" value="92" type="hidden"><input id="rlv_mainservices_ctrl1_chb_sys" name="rlv_mainservices$ctrl1$chb_sys" type="checkbox"> <span id="rlv_mainservices_ctrl1_lbl_main_sys">pro2</span> </td></tr></tbody></table> 

我想使輸入類型= 「複選框」 如果輸入類型的值= 「隱藏」 存在在相同的<td>等於li(小部件)的id。這個當用戶點擊關閉。

+0

我想知道,你想根據偏好設置複選框,然後將它們設置爲'禁用:true',所以用戶不能切換該複選框? – 2012-02-26 08:39:32

+0

'disable = false' – 2012-02-26 08:51:00

+1

我不確定這是什麼意思,但看到我的答案。 – 2012-02-26 09:01:47

回答

1

試試這個

$(​'table tr input[type="hidden"][value="'+widgetId+'"]') 
     .siblings(':checkbox').attr("disabled": false).attr("checked": false); 
+0

我需要相反: 啓用,未選中 – 2012-02-26 08:36:10

+0

的JavaScript原生對象的標籤不需要引號:http://jsfiddle.net/bCZWN/ – 2012-02-26 08:38:20

+0

更新code..enabled並沒有檢查 – 2012-02-26 08:39:00

1

其實你可以用jQuery做到這一點。

要啓用

$('#element').removeAttr('disabled'); 

要取消

$('#element').removeAttr('checked'); 

或者,即使它們合併

$('#element').removeAttr('disabled').removeAttr('checked'); 

以防萬一,你操縱的屬性就已經被加載後,那麼它將不再可用屬性來自jQuery 1.6

如果使用這樣後來,嘗試.removeProp(propertyName)[docs here]代替。

$('#element').removeProp('disabled').removeProp('checked'); 

更新

  • 更新1:它的工作。檢查demo here

  • 更新2:我也模擬操作和使用創造另一個.removeProp小提琴(),檢查here

  • 更新3:正常,檢查this update。它與您的標記兼容,但是,您可能需要使用適當的選擇器。但是,這會給你整個想法。

+0

它不工作 – 2012-02-26 08:51:56

+0

'$('table tr input [type = hidden]')。filter(function(){ return $(this).val()== widgetId; })。siblings('input [type = checkbox]')。removeProp('disabled')。removeProp('checked');' – 2012-02-26 08:55:39

+1

@just_name,它的確如此。檢查我的更新 – Starx 2012-02-26 08:59:20

1

我想知道這是否是你想要做的事情。我不得不想出一些替代標記,並且我不知道widgetId來自哪裏。但是,這是你所追求的效果嗎?

編輯 - 我真的不知道什麼widgetId在這裏做什麼,我的原代碼忽略它,所以我修改了代碼運行脫input:button點擊,這將操縱它的兄弟姐妹。

示例HTML

<table> 
    <tr> 
     <td> 
      <label>Checkbox <input type="checkbox" value="test1"/></label> 
      <input type="hidden" value="widget"/> 
      <label>Checkbox <input type="checkbox" value="test2"/></label> 
      <label>Checkbox <input type="checkbox" value="test3"/></label> 
      <input type="button" class="check" value="Check"/> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <label>Checkbox <input type="checkbox" value="test1"/></label> 
      <input type="hidden" value="widget"/> 
      <label>Checkbox <input type="checkbox" value="test2"/></label> 
      <label>Checkbox <input type="checkbox" value="test3"/></label> 
      <input type="button" class="check" value="Check"/> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <label>Checkbox <input type="checkbox" value="test1"/></label> 
      <input type="hidden" value="widget"/> 
      <label>Checkbox <input type="checkbox" value="test2"/></label> 
      <label>Checkbox <input type="checkbox" value="test3"/></label> 
      <input type="button" class="check" value="Check"/> 
     </td> 
    </tr> 
</table> 

的jQuery

$('.check').click(function(){ 
    var $td = $(this).parent('td'); 

    if (!confirm('This widget will be removed, ok?')) { 
     $td.find(':checkbox').prop({disabled: true, checked: true}); 
    } else { 
     $td.find(':checkbox').prop({disabled: false, checked: false}); 
    } 
}); 

http://jsfiddle.net/SPVPx/1/

編輯2

一個不同的示例,使用input:button不在table之內。

HTML

<input type="button" class="check" value="Remove Widget 1" data-widget-id="widget1"/> 
<input type="button" class="check" value="Remove Widget 2" data-widget-id="widget2"/> 
<input type="button" class="check" value="Remove Widget 3" data-widget-id="widget3"/> 
<table> 
    <tr> 
     <td> 
      Widget 1: 
      <label>Checkbox <input type="checkbox" value="test1"/></label> 
      <input type="hidden" value="widget1"/> 
      <label>Checkbox <input type="checkbox" value="test2"/></label> 
      <label>Checkbox <input type="checkbox" value="test3"/></label> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      Widget 2: 
      <label>Checkbox <input type="checkbox" value="test1"/></label> 
      <input type="hidden" value="widget2"/> 
      <label>Checkbox <input type="checkbox" value="test2"/></label> 
      <label>Checkbox <input type="checkbox" value="test3"/></label> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      Widget 3: 
      <label>Checkbox <input type="checkbox" value="test1"/></label> 
      <input type="hidden" value="widget3"/> 
      <label>Checkbox <input type="checkbox" value="test2"/></label> 
      <label>Checkbox <input type="checkbox" value="test3"/></label> 
     </td> 
    </tr> 
</table> 

jQuery的

// For testing only. 
$(':checkbox').prop({disabled: true, checked: true}); 

$('.check').click(function(){ 
    var id = $(this).data('widget-id'), 
     $td = $('table tr td input:hidden').filter(function(){ 
      return this.value == id; 
     }).parent('td'); 

    if (confirm('This widget will be removed, ok?')) { 
     $td.find(':checkbox').prop({disabled: false, checked: false}); 
    } else { 
     $td.find(':checkbox').prop({disabled: true, checked: true}); 
    } 
}); 

http://jsfiddle.net/SPVPx/2/

+0

這是真正的問題,但是當我修改我的建議時,我發現我的自我需要相反.i的意思是: 'Enabled and checked = false '而不是答案 – 2012-02-26 09:04:53

+0

http://stackoverflow.com/q/9308613/418343 – 2012-02-26 09:05:37

+1

看到我的第二個編輯。 – 2012-02-26 09:27:07

相關問題