2013-08-10 31 views
8

Kiedy przesłać formularz, który zawiera pole tekstowe z „MAXLENGTH” atrybut używając Ajax, otrzymuję błąd javascript: Uncaught SyntaxError: Unexpected token u (jquery-1.9.1.min.js:3)input field MaxLength na przesyłanie formularza ajax powoduje „Uncaught SyntaxError: Nieoczekiwany token u”

Jeśli Usuwam atrybut maxlength, wszystko działa poprawnie.

Moje HTML, okrojona moją stronę do minimum replikować problem:

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

Nie można się zorientować, co robię źle - może skryptów jquery dostarczonych przez szablon z visual studio są niezgodne? Byłbym wdzięczny za każdą pomoc, dzięki.

+0

Nie mogę odtworzyć błędu z podanym przez Ciebie fragmentem kodu. Czy możesz dla nas zrobić jsfiddle? – Spork

+0

Warto zauważyć: biorąc pod uwagę odpowiedź poniżej, podczas gdy 'maxlength' uruchamia problem tutaj, prawdziwy problem polega na" dyskretnej "walidacji w ogóle, a nie na właściwości' maxlength'. – perfectionist

+0

@rene, zgodził się, że przyczyna błędu jest taka sama, więc poprawka jest taka sama. Te dwa pytania mają różne informacje diagnostyczne, z których każdy może być przydatny dla użytkowników szukających rozwiązania tego samego problemu. Czy zamknięcie jednego pytania jako duplikatu zachowuje tę zdolność wyszukiwania? Jeśli tak, to go popieram. – perfectionist

Odpowiedz

10

Wydaje się to być błąd w Microsoft.jQuery.Unobtrusive.Validation w połączeniu z jQuery 1.9>

W tym blog patch pliku js sugeruje

I zamieszczonym swój problem i rozwiązać go dodając div z wymagane atrybuty do twojego html, aby zapobiec dostarczeniu niezdefiniowanej do analizy 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>  

Istnieje również problem z numerem Microsoft Connect dla tego problemu. Zagłosuj także na to, aby uzyskać priorytet w ramach Microsoft.

+0

Doskonała odpowiedź. Rozwiązania "div" i js patch działają i dobrze ilustrują problem. Więcej informacji znajduje się w raporcie o błędzie: http://connect.microsoft.com/VisualStudio/feedback/details/776965/please-support-jquery-v1-9-0-properly-in-jquery-validate-unobtrusive Koniec usunąłem swoje odniesienie do plików "jquery.validate. *", ponieważ nie dodawały niczego w moim przypadku użycia. – perfectionist