Ontem estava fazendo um blade.php no Laravel para procurar um produto através do <datalist>. Eu não sei se o Laravel tem algo que substitua o <datalist>, mas eu resolvi usar o JavaScript, onde eu aprendi que o <option> tem um propriedade chamada data-id. Eu criei um array para a consulta, e usei a chave do array para definir o data-id do <option>, e pedi para o JavaScript exibir os dez próximos itens a partir do item selecionado através do comando for(contador=selecionado;contador<selecionado+9,selecionado++), mas ele acabou listando todos os produtos a partir do item selecionado.
Pensei que o problema era o ambiente Laravel, assim traduzi o blade.php em php, mas o problema continuou o mesmo. Para contornar, usei o comando forEach no lugar do for, e o código ficou assim:
<?php
$mysqli=new mysqli("localhost","root","","astudy");
$query=$mysqli->query("select * from tbprod order by prod");
$prod=$query->fetch_all(MYSQLI_ASSOC);?>
<script>
function procurar(valor){
for(i=0;i<produtos.options.length;i++){
if(produtos.options[i].value==valor){
j=produtos.options[i].getAttribute('data-id');}}
show(j);}
function show(j){
divshow.innerHTML="";
teste=[1,2,3,4,5,6,7,8,9,10]
teste.forEach(function(){
divshow.innerHTML+=produtos.options[j].value+"<br>";j++})}
</script>
<div><p><p>
<form>
<input list=produtos autofocus id=produto onchange=procurar(value) autofocus>
<datalist id=produtos>
<?php foreach($prod as $key=>$pr){echo "<option data-id=$key value='".$pr['prod']."'>";} ?>
</datalist></form></div>
<div id=divshow></div>
<script>show(0)</script>