2014-02-09 74 views
2

我想用jQuery来禁用表单元素,一旦复选框被点击,但它似乎并没有工作。任何人都可以看到最新的错误?禁用jQuery的表单元素

$('name="globallyAddTime"').click(function() { 
if ($(this).attr('checked')) { 
     $('name="addedQuantity[]"').attr('disabled', true); 
    } else { 
     $('name="addedQuantity[]"').removeAttr('disabled'); 
    } 
}); 

这里是一个链接到的jsfiddle

http://jsfiddle.net/pocockn/bwmv7/4/

+0

也是你的小提琴没有jQuery框架 – stackErr

+0

使用.prop( '禁用',真)/。道具( '禁用',假),而不是ATTR/removeAttr。 –

回答

2

属性选择应该是这样的[attr=value]

$('[name="globallyAddTime"]').change(function() { 
if ($(this).prop('checked')) { 
     $('[name="addedQuantity[]"]').attr('disabled', true); 
    } else { 
     $('[name="addedQuantity[]"]').removeAttr('disabled'); 
    } 
}); 

Fiddle Demo

你可以把它简化为如下

$('[name="globallyAddTime"]').change(function() { 
    $('[name="addedQuantity[]"]').prop('disabled', this.checked); 
}); 

Fiddle Demo

1

当选择一个属性,则必须使用[]:

$('[name="globallyAddTime"]').click(function() { 
    if ($(this).attr('checked')) { 
     $('[name="addedQuantity[]"]').attr('disabled', true); 
    } else { 
     $('[name="addedQuantity[]"]').removeAttr('disabled'); 
    } 
}); 
2

尝试此(使用丙代替ATTR)

$('name="globallyAddTime"').click(function() { 
if ($(this).prop('checked')) { 
     $('[name="addedQuantity[]"]').attr('disabled', true); 
    } else { 
     $('[name="addedQuantity[]"]').removeAttr('disabled'); 
    } 
}); 

ATTR别t返回复选框的当前状态。

而你在名称选择器中有错误。需要[name="addedQuantity[]"]

+0

另外[name =“worldwideAddTime”]用于输入复选框。 – xmarston

+0

对于jQuery 1.6+,顺便使用'prop'而不是'attr' –

0

用途:

$('[name="globallyAddTime"]').click(function() { 
    if ($(this).prop('checked')) { 
     $('#addedQuantiy_1').attr('disabled', true); 
    } else { 
     $('#addedQuantiy_1').removeAttr('disabled'); 
    } 
}); 

Working Fiddle

0

我知道了。

<div id="addIngredient"> 
         <p> 
          <input type="text" id="ingredient_1" name="ingredient[]" value="" placeholder="Ingredient" /> 
          <input type="text" id="quantity_1" name="quantity[]" value="" placeholder="Quantity" /> 
          <select id="selectQuantity_1" name="quantityType[]"> 
           <option value="grams">Grams</option> 
           <option value="ounces">Ounces</option> 
           <option value="Pounds">Pounds</option> 
          </select> 
          <input type="text" id="alternative_1" name="alternative[]" value="" placeholder="Alternative Ingredient" /> 
          <input type="text" id="addedQuantiy_1" name="addedQuantity" value="" placeholder="Quantity per extra person" /> 

          <a href="#" id="addNewIngredient">Add Ingredient</a> 
         </p> 
        </div> 


<h2>Added Time</h2> 
        <input type="checkbox" name="globallyAddTime" id="global" value="Global" /> 
        <label>Increase Quantites Proportionally to Portion Number</label> 
       </div> 



<script type="text/javascript" src="script/jquery-1.11.0.min.js"></script> 
<script> 
$('#global').change(function() { 
     if($(this).is(":checked")) { 
      $('input[name=addedQuantity]').attr('disabled', true); 
    } else { 
     inputs.removeAttr('disabled'); 
    } 
    }); 
</script> 
+0

。也许你可以避免在输入名称中使用'[]'。无论如何它不会伤害你。^_ ^ – yul757