Estoy tratando de usar el código a continuación para que los usuarios del sitio web tengan la opción de seleccionar en qué base de datos les gustaría buscar de una lista de opciones del menú desplegable. El código funciona bien, pero los usuarios pueden enviar una búsqueda cuando el menú desplegable está configurado en la selección predeterminada, lo que genera un error. Solo quiero que los usuarios puedan enviar una búsqueda si seleccionan la opción 1, la opción 2, etc. del menú desplegable.
¿Hay alguna manera de lograr esto? ¡Gracias por adelantado!
<script type="text/javascript"> function dosearch() { var sf=document.searchform; var submitto = sf.sengines.options[sf.sengines.selectedIndex].value + escape(sf.searchterms.value); window.location.href = submitto; return false; } </script> <form name="searchform" onSubmit="return dosearch();"> Search: <select name="sengines"> <option value="" disabled selected>Select an option by category</option> <option value="">Option 1</option> <option value="">Option 2</option> <option value="">Option 3</option> <option value="">Option 4</option> </select> For: <input type="text" name="searchterms"> <input type="submit" name="SearchSubmit" value="Search"> </form> Primero, debe asignar diferentes valores a cada opción desplegable. En este momento, todas las opciones tienen el mismo valor "" , por lo que no puede diferenciar entre las opciones seleccionadas.
<option value="option_0" disabled selected>Select an option by category</option> <option value="option_1">Option 1</option> <option value="option_2">Option 2</option> <option value="option_3">Option 3</option> <option value="option_4">Option 4</option> En la función dosearch() , verifique si la opción seleccionada es diferente a option_0 . Si es así, realice la búsqueda. Si no es así, avise al usuario de que primero debe seleccionar la opción del menú desplegable.
function dosearch() { const sf = document.searchform; const selected_option = sf.sengines.options[sf.sengines.selectedIndex].value; if (selected_option === "option_0") { alert('Choose an option from dropdown first.') } else { const submitto = sf.sengines.options[sf.sengines.selectedIndex].value + escape(sf.searchterms.value); window.location.href = submitto; return false; } }