Come personalizzare il messaggio di errore di maxlength con jQuery convalidato per mostrare il numero di caratteri immessi

StackOverflow https://stackoverflow.com/questions/1206705

Domanda

Voglio che la validazione maxlength di jQuery validate visualizzi un messaggio di errore simile al seguente:

" Ti preghiamo di inserire non più di {0} caratteri. Al momento hai inserito {1} caratteri. & Quot;

Dove {1} è un segnaposto per l'importo effettivo. Qual è il modo migliore per farlo?

È stato utile?

Soluzione

Non penso che ci sia un modo semplice per farlo, ma ho trovato una soluzione alternativa per te. Immagino che potresti scrivere il tuo validatore per quel campo, ma questo potrebbe essere più semplice.

Inizia cambiando il messaggio predefinito per gli errori maxlength :

$.extend($.validator.messages, {  
    maxlength: $.validator.format("Please enter no more than {0} characters. You've currently entered CHARS_NO characters.")
});

Mantieni la convalida come al solito, ma aggiungi questa funzione:

$('input').keyup(function () {
    var rules = $(this).rules();
    if (rules.maxlength !== undefined && !$(this).valid()) {
        var errorLabel = $('label[for=' + $(this).attr('id') + '][generated=true].error');
        errorLabel.text(errorLabel.text().replace('CHARS_NO', $(this).val().length));
        return false;
    }
});

Ecco la demo funzionante per te.

Altri suggerimenti

Non sono sicuro di come si stia attivando la convalida, ma l'attributo maxlength su un input impedirà all'utente di inserire più caratteri di qualunque cosa indichi quel valore . Pertanto, non sarà necessario informare l'utente che hanno inserito più caratteri di maxlength poiché semplicemente non possono farlo.

Puoi fornire ulteriori contesti e / o dettagli?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top