6
votes

JQuery Validate et champ de saisie désactivé

J'utilise ci-dessous Bootstrap en tant que sélecteur déroulant, qui puis avec une fonction JQuery associée affiche le champ choisi dans l'entrée entrée type = "texte" . Mais les utilisateurs peuvent toujours écrire leur propre dans le champ de saisie, que je voudrais éviter. J'ai essayé d'utiliser l'attribut désactivé sur le champ de saisie, mais si je le fais que le plug-in JQuery Valider va simplement l'ignorer et accorder la permission même s'il est vide.

est-il possible de "désactiver" un champ de saisie avec type = "texte" , sans utiliser l'attribut désactivé afin que je puisse toujours utiliser jQuery validate. xxx < / p>


1 commentaires

Alors, où est le javascript pertinent?


4 Réponses :


2
votes

semble être comme si vous devez utiliser le readonly = "Readonly" attribut http://www.w3schools.com/tags/att_input_readonly.asp


0 commentaires

14
votes

Il n'y a pas de solution directe ... si le champ est "désactivé" via l'attribut désactivé , le plug-in Jquery Validate ignorera toujours. (Logiquement, il ne sert à rien de valider quelque chose que l'utilisateur ne peut pas éditer.)

Cependant, il y a une solution de contournement. Si vous utilisez l'attribut lisonly au lieu de désactivé , il peut être validé. xxx

Démo: < un href = "http://jsfiddle.net/85pu1oe5/" rel = "noreferrer"> http://jsfiddle.net/85pu1oe5/


0 commentaires

0
votes

Quelle que soit la qualité de cette question - il y a une solution de contournement qui est assez simple. Pourquoi ne pas utiliser de champ caché de plus à celui désactivé qui est ignoré par jquery.validate.js?

E.g. p>

<select style="display:none;"><option value="sample">Sample</option></select>


0 commentaires

0
votes

Votre meilleur pari serait de s'appuyer sur validator.showerrors () code> et validez manuellement cette entrée désactivée.

J'ai eu une situation similaire lorsque je devais valider la case à cocher Conditions, mais il a été conçu pour être désactivé jusqu'à ce que l'utilisateur fait défiler l'utilisateur par le biais du texte. C'est ce que je propose à la fin: p>

        var message = "You must accept the Terms and Conditions in order to proceed with registration";
        var termsValidator = $('#step-5 form').validate({
            rules: {
                acceptTnC: "required"
            },
            messages: {
                acceptTnC: message
            },
            submitHandler : function (form) {
                // Need to manually validate, cause checkbox is disabled by default and validation
                // skips disabled fields
                if(!form.acceptTnC.checked) {
                    termsValidator.showErrors({
                        acceptTnC: message
                    })
                }
                else {
                    submitForm();
                }
            }
        });
        $('[name="acceptTnC"]').on('change', function (e) {
            termsValidator.element(e.target);
        })


0 commentaires