8 votes

le champ input maxlength lors de la soumission d'un formulaire ajax provoque "Uncaught SyntaxError : unexpected token u" (erreur de syntaxe non résolue : élément inattendu u)

Lorsque je soumets un formulaire qui comprend un champ texte avec un attribut "maxlength" en utilisant ajax, j'obtiens une erreur javascript : Uncaught SyntaxError: Unexpected token u (jquery-1.9.1.min.js:3)

Si je supprime l'attribut maxlength, tout se passe bien.

Mon HTML, ma page a été réduite au strict minimum pour reproduire le problème :

<html>
    <head>
        <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
        <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

        <script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
        <script src="/Scripts/jquery.validate.js"></script>
        <script src="/Scripts/jquery.validate.unobtrusive.js"></script>
    </head>
    <body>
        <form action="#" data-ajax="true" id="form0" method="post">
             <input id="deposit" name="numberValue" type="text" class="despositInput" maxlength="8" value="1000">
             <input type="submit" value="go">
        </form>    
    </body>
</html>

Je n'arrive pas à comprendre ce que je fais mal - peut-être que les scripts de jquery fournis par le modèle de visual studio sont incompatibles ? J'apprécierais toute aide, merci.

10voto

rene Points 14522

Il semble qu'il s'agisse d'un bogue dans Microsoft.jQuery.Unobtrusive.Validation en combinaison avec jQuery 1.9>

Dans cette blog un patch du fichier js est suggéré

J'ai reproduit votre problème et l'ai résolu en ajoutant une div avec les attributs requis à votre html pour éviter qu'un undefined soit fourni à l'analyse json.

    <form action="#" data-ajax="true" id="form0" method="post">
        <div data-valmsg-for="numberValue" data-valmsg-replace="true">deposit not valid</div>
        <input id="deposit" name="numberValue" type="text"  maxlength="8" value="1000">
        <input type="submit" value="go">
    </form>    

Il existe également un Microsoft Connect ouverte pour ce problème. Votez également pour cette question afin qu'elle soit traitée en priorité par Microsoft.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X