validar validacion vacios formularios formulario enviar ejemplos ejemplo con campos antes javascript drop-down-menu multiple-select

validacion - validar formulario javascript onclick



Javascript Obtenga valores del cuadro de opción de selección múltiple (4)

Este me está volviendo loco. Tiene que ser algo simple y estúpido que estoy pasando por alto. Tengo un cuadro de selección múltiple en un formulario. Solo estoy tratando de obtener los valores que se seleccionan. En mi ciclo, si uso la alerta, entonces no tengo ningún problema. Tan pronto como trate de concatenar los valores que obtengo, el error ''SelBranch [...]. Selected'' es nulo o no es un objeto

<form name="InventoryList" method="post" action="InventoryList.asp"> <select name="SelBranch" class="bnotes" size="5" multiple="multiple"> <option value="All">All</option> <option value="001 Renton">001 Renton</option> <option value="002 Spokane">002 Spokane</option> <option value="003 Missoula">003 Missoula</option> <option value="004 Chehalis">004 Chehalis</option> <option value="005 Portland">005 Portland</option> <option value="006 Anchorage">006 Anchorage</option> <option value="018 PDC">018 PDC</option> </select> <input type="button" name="ViewReport" value="View" class="bnotes" onclick="GetInventory();"> </form> <script language="JavaScript"> function GetInventory() { var InvForm = document.forms.InventoryList; var SelBranchVal = ""; var x = 0; for (x=0;x<=InvForm.SelBranch.length;x++) { if (InvForm.SelBranch[x].selected) { //alert(InvForm.SelBranch[x].value); SelBranchVal = SelBranchVal + "," + InvForm.SelBranch[x].value; } } alert(SelBranchVal); } </script>


Además, cambia esto:

SelBranchVal = SelBranchVal + "," + InvForm.SelBranch[x].value;

a

SelBranchVal = SelBranchVal + InvForm.SelBranch[x].value+ "," ;

El motivo es que, por primera vez, la variable SelBranchVal estará vacía


Aquí estoy publicando la respuesta solo para referencia que puede ser útil.

<!DOCTYPE html> <html> <head> <script> function show() { var InvForm = document.forms.form; var SelBranchVal = ""; var x = 0; for (x=0;x<InvForm.kb.length;x++) { if(InvForm.kb[x].selected) { //alert(InvForm.kb[x].value); SelBranchVal = InvForm.kb[x].value + "," + SelBranchVal ; } } alert(SelBranchVal); } </script> </head> <body> <form name="form"> <select name="kb" id="kb" onclick="show();" multiple> <option value="India">India</option> <option selected="selected" value="US">US</option> <option value="UK">UK</option> <option value="Japan">Japan</option> </select> <!--input type="submit" name="cmdShow" value="Customize Fields" onclick="show();" id="cmdShow" /--> </form> </body> </html>


El bucle for tiene una ejecución extra. Cambio

for (x=0;x<=InvForm.SelBranch.length;x++)

a

for (x=0; x < InvForm.SelBranch.length; x++)


Eche un vistazo a HTMLSelectElement.selectedOptions .

HTML

<select name="north-america" multiple> <option valud="ca" selected>Canada</a> <option value="mx" selected>Mexico</a> <option value="us">USA</a> </select>

JavaScript

var elem = document.querySelector("select"); console.log(elem.selectedOptions); //=> HTMLCollection [<option value="ca">Canada</option>, <option value="mx">Mexico</option>]

Esto también funcionaría en elementos <select> no multiple

Advertencia: el soporte para esta selectedOptions parece bastante desconocido en este momento