Visualizzare il Valore anzichè il testo in dropdown

di il
2 risposte

Visualizzare il Valore anzichè il testo in dropdown

Salve come da titolo nella tabella che ho fatto per vedere nel dropdown il valore anzichè il testo e solo nel momento in cui clicco sull' elemento vedere la descrizione ho scritto questi codici:
view:

 <td>
                        <select 
                            class="form-control form-control-sm border-dark font-weight-bold"  
                            style="-webkit-appearance:none;-moz-appearance:none;text-align:center;padding:0px 0px 0px 0px;font-size:12px" 
                            id="Ass_@(g)_@(Elencodip.IdDipendenteInListino)"
                            asp-for="PresenzeListino.Where(d=> d.IddipendenteInListino== Elencodip.IdDipendenteInListino && 
                                d.Giorno-1 == g).FirstOrDefault().Assenza" 
                            asp-items="ViewBag.DropTipiAssenze">
                            <option value=""></option>
                        </select>
                    </td>
e javascript

$(document).ready(function() {
    let NumDip = $("td[id^=matricola]").length;
    let Anno = $("#comboboxAnno").val();
    let Mese = $("#comboboxMese").val();
    let contaGiorni = (year, month) => new Date(year, month, 0).getDate()
    let totGiorniMese = contaGiorni(Anno, Mese)
    
//Visualizza descrizione Assenza
    //Ciclo Giorni
    for (let g = 1; g <= totGiorniMese; g++) {
        let giorno = new Date(Anno + "-" + Mese + "-" + g);
        //INIZIO CICLO DIPENDENTI
        for (let dip = 1; dip <= NumDip; dip++) {
            //Recupero l' id del dipendente
            let IdDipAss = $("#idDip_" + dip + "").text();
            //Inserisco il valore all caricamento della pagina
            $("#Ass_" + g + "_" + IdDipAss + " option:selected").html(
               $("#Ass_" + g + "_" + IdDipAss + " option:selected").attr("value")
            );
            //mette il valore al momento del cambio e dell' uscita con il mouse
            $("#Ass_" + g + "_"+IdDipAss + "").on("change mouseleave", function(){
                $("#Ass_" + g + "_"+IdDipAss +" option:selected").html(
                $("#Ass_" + g + "_"+IdDipAss +" option:selected").attr("value")
                );
            });
        }
    }
};
fin qui tutto ok!
solo che quando apro il dropdown tutte le altre opzioni si vedono perfettamente le descrizioni ma quello selezionato fà vedere il valore e non la descrizione:
Cattura.JPG
Cattura.JPG

ho pensato di fare una funzione al click:

            // quando clicco vedo nel menu il testo e non il valore
            $("#Ass_" + g + "_"+IdDipAss + "").on("click", function(){
                $("#Ass_" + g + "_"+IdDipAss +" option:selected").html(
                $("#Ass_" + g + "_"+IdDipAss +" option:selected").attr("text")
                );
            });
ma non funziona, credo perchè l' attributo text è diventato il valore.
qualcuno sà darmi dei consigli.

2 Risposte

  • Re: Visualizzare il Valore anzichè il testo in dropdown

    eternityck ha scritto:


    Salve come da titolo nella tabella che ho fatto per vedere nel dropdown il valore anzichè il testo e solo nel momento in cui clicco sull' elemento vedere la descrizione ho scritto questi codici [...]
    Il codice è al limite dell'illeggibilità: come prima operazione, credo sia indispensabile un refactoring per semplificare quantomeno il valore dell'attributo asp-for, che contiene una espressione con LINQ, direi poco adatta all'uso in una vista (non per niente, abbiamo i ViewModel che ci aiutano in questo, no?).

    Dai una occhiata a questa risposta su StackOverflow per vedere alcuni modi di utilizzo.

    Anche la parte in JavaScript non è che sia il massimo: componi più volte l'identificativo allo stesso modo e ripeti la chiamata con la funzione JQuery $() numerose altre volte. Determina l'ID di riferimento una volta per tutte, cerca l'oggetto JQuery corrispondente usando la funzione $() e con il valore ottenuto da essa codifica la gestione degli eventi e il cambio dei valori. Finché il codice non sarà chiaro da leggere, analizzarlo è difficile e in casi come questi, dove non avviene ciò che ci si aspetta, manutenerlo è uno sforzo immane.

    Ciao!
  • Re: Visualizzare il Valore anzichè il testo in dropdown

    Ciao marco, grazie per i consigli sui viewmodel, ma non ho capito, che consiglio mi hai dato per il codice javascript?
Devi accedere o registrarti per scrivere nel forum
2 risposte