Tengo una lista selecta como esta
<select asp-for="FileTypeIndex" class="form-control" id="FileTypeIndex" asp-items="Html.GetEnumSelectList<FileTypeIndex>()"></select> <input type="file" class="form-control " accept="*.*" id="productfile" name="productfile">Quiero cambiar el atributo de aceptación de la entrada del archivo de acuerdo con el FileTypeIndex seleccionado por JQuery
$('#FileTypeIndex').on('change',function() { var filytypeIndex=$('#FileTypeIndex').val(); switch(filytypeIndex) { case 1: $('#productfile').attr("accept", ".pdf"); break; case 2: case 5: $('#productfile').attr("accept", ".mp4,.avi"); break; case 3: $('#productfile').attr("accept", ".mp3"); break; case 4: $('#productfile').attr("accept", ".jpg"); break; default: } });Pero siempre es " . ", y no cambiará
Solo necesita cambiar el tipo de datos de la variable filytypeIndex a número usando la función Number() de javascript.
Porque en caso de cambio da 1,2,3 ... son números
Su código final como a continuación
$('#FileTypeIndex').on('change', function () { var filytypeIndex = Number($('#FileTypeIndex').val()); switch (filytypeIndex) { case 1: $('#productfile').attr("accept", ".pdf"); break; case 2: case 5: $('#productfile').attr("accept", ".mp4,.avi"); break; case 3: $('#productfile').attr("accept", ".mp3"); break; case 4: $('#productfile').attr("accept", ".jpg"); break; default: } }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <select asp-for="FileTypeIndex" class="form-control" id="FileTypeIndex" asp-items="Html.GetEnumSelectList<FileTypeIndex>()"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="file" class="form-control " accept="*.*" id="productfile" name="productfile">