Tengo un formulario con campos de entrada: nombre y descripción. El campo de nombre es un menú desplegable. según el nombre seleccionado, la descripción debe cambiar. Ya he hecho el menú desplegable para rellenar los nombres.
<form> <select name="name" > @foreach($books as $book) <option value="{{$book->name}}">{{$book->name}}</option> @endforeach </select>¿Cómo cambio el campo de descripción según el menú desplegable seleccionado?
<input type="text name="description" value="{{ $book->description }}>Versión actualizada:
Debe almacenar en algún lugar todos los $ libros como variable de JavaScript. Después de eso, cuando seleccione el nombre del libro, puede encontrar el objeto del libro (con descripción y otros campos) y hacer lo que quiera con ellos. Puedes lograrlo implementando estos pasos:
1) Asegúrate de tener jQuery en tu página
2) Agregue este código JS en algún lugar de la página (ver comentarios)
<script type="text/javascript"> // 2.1 "Store" all books in some place on the page, for example, you can pass PHP variable into JS variable like this var books = <?= json_encode($books); ?>; /* * 2.2 Create function for search book by its name * (if each value of the field "name" in the $books is unique) or by some unique field, for example, "id" */ // get book by name var getBookByName = function (bookName) { if (typeof books === 'object') { for (var key in books) { if (typeof books[key].name !== 'undefined' && books[key].name === bookName) { return books[key]; } } } return false; } $(document).ready(function () { // add event listener on the select with the attribute name="name" $('select[name="name"]').on('change', function (e) { // get book by selected name of the book var selectedBook = getBookByname($(e.target).find('option:selected').text()); if (selectedBook) { // set new value for the input with the attribute name="description" $('input[name="description"]').val(selectedBook.description); } // we can't find book by it's name else { alert("Sorry, we can find description for this book"); } }); }); </script>