2013-05-08 22 views
6

To nie jest pytanie, ale odpowiedź, którą chcę się z wami podzielić. Spędziłem ponad cztery godziny, wyrywając moje włosy z czegoś, co okazuje się być błędem w TinyMCE lub Firefox.Formularz z textarea tinyMCE o wymaganym html5 nie może przesłać

Z TinyMCE załadowany, jeśli podasz HTML5 required atrybut na textarea forma po prostu nie złoży w Firefoksie. Brak błędów, nic w Firebug, tylko uparta odmowa złożenia.

Nie wiem, czy to błąd FF lub TinyMCE i nie obchodzi mnie to. Po prostu nie chcę, żeby inni koderowie przechodzili przez to, co mnie ostatnio spotkało.

Aby zadać pytanie: Czy ten błąd jest udokumentowany w dowolnym miejscu? Czy ktoś wie?

Jeśli jest to nieodpowiedni wpis dotyczący przepełnienia stosu, powiedz mi, a usunę go.

Odpowiedz

2

Problemem jest daleko od bycia problemem Firefoksa. Rzeczywiście Chrome i Opera ("stara" opera przed "mózgiem" została przeszczepiona z Chrome) i prawdopodobnie każda inna nowoczesna przeglądarka dałaby ci ten sam ból głowy.

Zarówno w Operze, jak i w Chrome, jest flaga wymagająca, aby pole było wymagane (mimo, że masz w nim zawartość). Chrome jest na tyle miły, aby dać ci ten komunikat o błędzie w konsoli:

An invalid form control with name='<name of textarea>' is not focusable. 

Niezbyt zaskakujące, jeśli wziąć pod uwagę, że TinyMCE rzeczywiście tworzy edytowalny div pojemnik, ukrywając swoją oryginalną textarea. Jest to ukryty textarea (z atrybutem required), którego przeglądarka oczekuje od Ciebie.

Powyżej na Github, tutaj: https://github.com/tinymce/tinymce/issues/2584, istnieje sugerowane rozwiązanie, które idzie tak:

// fix tinymce bug 
     if($this.is('[required]')){ 
      options.oninit = function(editor){ 
       $this.closest('form').bind('submit, invalid', function(){ 
        editor.save(); 
       }); 
      } 
     } 

nie testowałem ten fragment osobiście, ale studia to może być w stanie dostać się dzieje, jak tak długo, jak jesteś w stanie umieścić go we właściwym miejscu.