Как установить значение формы для ввода имени, но отправить идентификатор?

Итак, у меня есть такое поле ввода формы:

<input list="materials" name="material_id" placeholder="Nazwa materiału" autocomplete="off">
    <datalist id="materials">
    @foreach($materials as $material)
    <option value="{{$material->id}}">{{$material->name}}</option>
    @endforeach
    </datalist>

Он показывает список материалов (имен), но он соответствует material_id (внешнему ключу), поэтому он должен отправлять значение идентификатора, но это может сбивать с толку пользователя. Как я могу настроить его так, чтобы он отправлял значение идентификатора, но оставил "название материала" в поле? (Я знаю, что это, вероятно, что-то из jscript или jquery, но я ничего о них не знаю)

Ваш вопрос сбивает с толку. Как вы отправляете Id?

Smit Raval 11.04.2018 12:28

Вы можете показать нам набор данных для $ материалов?

muecas 11.04.2018 12:29

Почему вы не используете меню <select>?

Devon 11.04.2018 12:29

Итак, вы выбираете имя из списка: например. Pen, но он заполняет поле ввода значением id ex. 1.

korni 11.04.2018 12:29
0
4
176
2

Ответы 2

вам нужно использовать событие onchange, подобное этому

$('select').on('change', function() {
  alert( this.value );
  //Do something
})

ваш html должен быть таким

<select>
    @foreach($materials as $material)
    <option value="{{$material->id}}">{{$material->name}}</option>
    @endforeach
</select>

пример

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <script type="text/javascript">
            $(document).ready(function() {
                $('select').on('change', function() {
                  alert( this.value );
                })
            });
        </script>
    </head>
    <body>
    //other things
    <select>
        @foreach($materials as $material)
        <option value="{{$material->id}}">{{$material->name}}</option>
        @endforeach
    </select>
    </body>
    </html>

Я думаю, вы правы в том, как это сделать. Но я не знаю, как обрабатывать jscript, где его поставить и как использовать.

korni 11.04.2018 12:42

см. пример, который приведен ниже

Rahul Shrivastava 11.04.2018 12:44

вы можете поместить тег тела сценария или тег заголовка

Rahul Shrivastava 11.04.2018 12:44

я думаю, что приведенного примера достаточно, чтобы понять

Rahul Shrivastava 11.04.2018 12:46

Я думаю, вы хотите получить некоторые данные, выбрав имя материала, соответствующее $ material-> id

Rahul Shrivastava 11.04.2018 12:49

Да. Я хочу заполнить поле ввода именем материала, но отправить идентификатор в качестве значения

korni 11.04.2018 13:05

вы должны использовать ajax

Rahul Shrivastava 11.04.2018 13:06

Ну тогда. Спасибо за ваше время и советы. Мне нужно будет изучить это подробнее.

korni 11.04.2018 13:10

хранить идентификатор материала в значении данных, таком как

@foreach($materials as $material)
<option data-value="{{$material->id}}">{{$material->name}}</option>
@endforeach

Другие вопросы по теме