Форма PHP не работает после того, как jQuery заменит объект INPUT

0

У меня есть форма с выбранным объектом. Параметры создаются с использованием PHP из базы данных mySQL. У меня также есть "новая" доступность. если пользователь выбирает "новый", я использую функцию jQuery - replaceWith, чтобы изменить объект select на объект типа ввода = "текст".

Все это отлично работает, кроме как после отправки формы PHP $ _POST ['description'] [0] пуст. Почему это так? Ниже я скопировал привязку объекта select и jQuery.

JQuery:

$(function() {
    $('select#description').change(function() {
        if ($(this).val() == 'new')
        var x = $(this).attr('name');
        $(this).replaceWith('<input type="text" name="description" id="description">');
        $('input#description').attr('name', x);
        $('input#description').attr('id', x);
    });
});

HTML/PHP:

<td>
   <select id='description' name='description[$i]'>
                        <option value=''></option>
                        <option name='[$i]' value='new'>new</option>";
                        echo $list = $this->desc_list();
echo "      </select>
 </td>

Это результат, который я ищу:

<select id='description' name='description[0]'>
<option value></option>
<option value='new'>new</option>
<option value='1'></option>
</select>

Если value = '1', нет описания, потому что, когда PHP сохранил последнюю запись, он был пуст. Когда пользователь выбирает "новый", код меняет объект select на это:

<input type='text' name='description[0]' id='description[0]'>

Код следующей страницы может быть простым, как

echo $_POST['description'][0]

Но он не будет повторять то, что было напечатано в текстовом поле. Почему последняя запись пуста?

  • 0
    вы можете показать вывод, если HTML / PHP? то, что вы дали, это сам код ..
  • 1
    Что говорит var_export($_POST) ? Есть что-нибудь связанное с description там?
Показать ещё 3 комментария
Теги:

2 ответа

0
Лучший ответ

Когда ответ был принят: решение, описанное ниже, неверно. Соответствие в комментариях этого ответа, похоже, привело к решению.

Ваша проблема заключается в том, как вы пытаетесь откликнуться на POST-переменную: echo $_POST['description'][0] никогда не будет предоставлять значение вашего ввода-текста, так как имя этого поля будет "description [0] ", поэтому вам нужно будет вызвать echo $_POST['description[0]'].

Если это не решит вашу проблему и вы не знакомы с var_export: попробуйте поместить print_r($_POST); выше/ниже вашего while-loop в page2.php и сообщить нам о выходе.

  • 0
    спасибо за руководство. Я изменил свой код, чтобы работать по-другому, однако я все еще хотел бы узнать, что я сделал неправильно с этим кодом. print_r ($ _ POST); дал: Array ([project_no] => 2 [pin] => n_projects [contracting_no] => 1 [lines] => 3 [asset_no] => Array ([0] => 1 [1] => 1 [2] => 1) [количество] => Массив ([0] => 1 [1] => 3 [2] => 5) [unit_price] => Массив ([0] => 2 [1] => 4 [ 2] => 6) [Сохранить] => Сохранить) Мне нужно увидеть следующее в списке, но его там нет. [description] => Массив ([0] => яблоки [1] => груши [2] => апельсины)
  • 0
    Я думаю, потому что jQuery заменяет ввод после загрузки страницы, что он больше не рассматривается как часть формы, это возможно?
Показать ещё 3 комментария
1

Поскольку вы заменили "описание [$ i]" на "описание",

  • 0
    var x = description [$ i], затем я использовал $ ('input # description'). attr ('name', x); изменить имя обратно на описание [$ i]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню