2013-08-10 26 views
8

Quando invio un modulo che comprende un campo di testo con un "maxlength" attributo utilizzando AJAX, ottengo un errore di javascript: Uncaught SyntaxError: Unexpected token u (jquery-1.9.1.min.js:3)ingresso campo maxlength sulla forma ajax presentazione provoca "SyntaxError Uncaught: token imprevisto u"

Se Rimuovo l'attributo maxlength tutto funziona bene.

mio HTML, ridotta la mia pagina per il minimo indispensabile per replicare il problema:

<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> 

Non può capire quello che sto facendo male - forse gli script jQuery forniti dal modello da Visual Studio sono incompatibili? Apprezzerei qualsiasi aiuto, grazie.

+0

Non riesco a ricreare il tuo errore con lo snippet che hai fornito. Potresti fare un jsfiddle per noi? – Spork

+0

Vale la pena notare: data la risposta qui sotto, mentre 'maxlength' innesca il problema qui il vero problema è fare con la convalida" discreta "in generale, piuttosto che specifica alla proprietà' maxlength'. – perfectionist

+0

@rene, concordato che la causa dell'errore è la stessa quindi la correzione è la stessa. Le due domande hanno informazioni diagnostiche diverse, ciascuna utile per gli utenti che cercano come risolvere lo stesso problema. La chiusura di una domanda come duplicato conserva questa capacità di ricerca? Se così lo sostengo. – perfectionist

risposta

10

questo sembra essere un bug in Microsoft.jQuery.Unobtrusive.Validation in combinazione con jQuery 1.9>

In questo blog una patch del file js è suggerito

ho riprodotto il problema e risolto con l'aggiunta di un div con il attributi richiesti al tuo html per evitare che un indefinito venga fornito all'analisi 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>  

c'è anche un problema Microsoft Connect aperto per questo problema. Vota anche su quello per ottenere la priorità in Microsoft.

+0

Ottima risposta. Le soluzioni "div" e js patch funzionano e illustrano bene il problema. Trovate maggiori informazioni nel rapporto bug: http://connect.microsoft.com/VisualStudio/feedback/details/776965/please-support-jquery-v1-9-0-properly-in-jquery-validate-unobtrusive Nel fine ho rimosso il mio riferimento ai file "jquery.validate. *", poiché non aggiungevano nulla nel mio caso d'uso. – perfectionist