Я думаю, вы, возможно, не захотите, чтобы он многократно создавал один и тот же.
Так что это может быть все, что вы хотите:
$("input[name='letters']").on("change", function(e) {
if($(this).is(":checked") && !($(this).next("label").length > 0) ) {
var letterChecked = $(this).attr("id");
$(this).after(
"<label id='" +
letterChecked +
"-school-label'>Please enter your " +
letterChecked +
" school<input id='" +
letterChecked +
"-school' type='text'></input></label>");
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="myletters">
A<input type="checkbox" name="letters" value="A" id="C" />
B<input type="checkbox" name="letters" value="B" id="B" />
C<input type="checkbox" name="letters" value="C" id="A" />
</div>
Здесь мы также проверяем, существует ли он уже. проверяет , прежде чем попытается добавить его снова.
Расширение
Если вы хотите удалить его при отмене выбора. (Я знаю, что вы не просили об этом:))
Вы можете добавить еще условие и удалить его.
$("input[name='letters']").on("change", function(e) {
if($(this).is(":checked") && !($(this).next("label").length > 0) ) {
var letterChecked = $(this).attr("id");
$(this).after(
"<label id='" +
letterChecked +
"-school-label'>Please enter your " +
letterChecked +
" school<input id='" +
letterChecked +
"-school' type='text'></input></label>");
} else {
$(this).nextAll("label").remove();
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="myletters">
A<input type="checkbox" name="letters" value="A" id="C" />
B<input type="checkbox" name="letters" value="B" id="B" />
C<input type="checkbox" name="letters" value="C" id="A" />
</div>
Надеюсь, это поможет вам!