1

下面是我的html代码:

<input type="checkbox" id="multiOptions" />IsForMultioptions

<input type="radio" value="1" name="option">option1

<input type="radio" value="2" name="option">option2

如果我选择复选框,即 multiOptions,则所有单选按钮都应转换为复选框。如果我取消选中复选框,即 multiOptions,则所有复选框都应转换为单选按钮。提前致谢。

4

2 回答 2

5

您需要实际删除并重新创建元素,因为 IE 不允许您在创建后更改typean input

jQuery 通过以下方式使这变得相当容易replaceWith

$("selector for the input to change").replaceWith('<input type="checkbox">');

例如:

$('input[type="radio"][name="option"]').each(function() {
    $(this).replaceWith('<input type="checkbox" name="option" value="' + this.value + '">');
});

或者,如果值可能包含需要实体的字符:

$('input[type="radio"][name="option"]').each(function() {
    var rep = $('<input type="checkbox" name="option">');
    rep.attr("value", this.value);
    $(this).replaceWith(rep);
});
于 2013-05-14T08:58:19.183 回答
2

您可以拥有两组元素,而不是替换元素,其中一组根据复选框隐藏:

HTML

<input type="checkbox" id="multiOptions">IsForMultioptions</input>
<div id="radios">
    <input type="radio" value="1" name="option">option1</input>
    <input type="radio" value="2" name="option">option2</input>
</div>
<div id="checkboxes">
    <input type="checkbox" value="1" name="option">option1</input>
    <input type="checkbox" value="2" name="option">option2</input>
</div>

jQuery

$(document).ready(function() {
  $('#checkboxes').hide();

  $('#multiOptions').on('click', function() {
    if ($(this).is(':checked')) {
      $('#radios').hide();
      $('#checkboxes').show();
    }
    else {
      $('#radios').show();
      $('#checkboxes').hide();
    }
  });
});

jsFiddle 示例

于 2013-05-14T09:13:07.680 回答