2013-05-14 2 views
1

Ниже мой HTML-код:Как изменить тип входа динамически с помощью JQuery или JavaScript

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

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

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

Если я выбираю флажок т.е. multiOptions то все переключатели должны преобразовать в флажки. и если снимите флажок, то есть multiOptions, тогда все флажки должны конвертироваться в переключатели. благодарит заранее.

+2

Это не будет работать в Internet Explorer http://stackoverflow.com/questions/2566394/changing-the-input-type-in-ie-with-javascript –

+0

Тогда для чего это решение? Должно быть что-то, что мы можем достичь этого. –

ответ

5

Вам необходимо будет удалить и воссоздать элементы, потому что IE не позволит вам изменить typeinput после его создания.

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); 
}); 
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 example.

+0

+1 Также хороший вариант. –