Скажем, у меня есть этот вид:Некоторые значения формы не получают поданные после использования .replaceWith()
<form action="submit" method="post">
<select name="category" id="categorylist">
<option value="love">Love</option>
<option value="magic">Magic</option>
<option value="custom">Custom</option>
</select>
<textarea name="content">SomeContent</textarea>
<input type="submit">
</form>
Я хотел изменить select
в input
когда я выбираю заказ, так что я пришел с этим:
$(function(){
$('#categorylist').change(function(){
$(this).replaceWith('<input type="text" name="category">');
});
if($('#categorylist').val() == 'custom')
$('#categorylist').replaceWith('<input type="text" name="category">');
});
Но когда выбор изменяется на входе, $_POST['category']
не там, когда я свалил $_POST
по форме представления. Почему это так?
Лучше жестко кодировать оба элемента, выбирать и вводить в HTML, причем исходный текст скрыт (используя CSS). Затем используйте jQuery '.hide()' и '.show()' для обмена. Какой бы элемент не был скрыт, он не будет включен в POST. –
@ Свекла-свекла Да, что работает :) Хм, но мне интересно, почему это не работает. – Michelle
Не знаю. Это не сразу очевидно. Вы можете попробовать: .replaceWith ('') '(в двух местах). то есть. добавьте закрывающий '/' к тегу. Вероятно, никакого эффекта, но стоит попробовать. –