2012-01-05 8 views
9

Muszę zweryfikować formularz. Formularz ten ma kilka list rozwijanych i edytor tinyMCE, sprawdzam poprawność tego formularza, dołączając ciąg "Wymagany" po każdym polu, jeśli jest pusty, jednak nie jestem w stanie zweryfikować edytora tinyMCE, jeśli edytor jest pusty, próbowałem coś takiego jakW jaki sposób sprawdzić poprawność edytora tinyMCE, jeśli jest pusta, dodając ciąg obok?

tinyMCE.get('tinyedotor').getContent(); 

ale bez powodzenia.

Oto moja fiddle

Odpowiedz

12

getContent() powinno działać dobrze. Twoje skrzypce nie zawierają kodu walidacyjnego formularza dla wartości edytora, co jest tutaj bardzo istotne. Spróbuj tego:

var editorContent = tinyMCE.get('tinyeditor').getContent(); 
if (editorContent == '') 
{ 
    // Editor empty 
} 
else 
{ 
    // Editor contains a value 
} 

Forked fiddle

Należy również pamiętać, masz zadeklarowane wielu id „s dla select listy rozwijanej.

Edit: można uzyskać id pojemnika edytora z metodą getContainer(): tinyMCE.get('tinyeditor').getContainer(). Wkładanie komunikat o błędzie po edytorze będzie wówczas mniej więcej tak:

$('<span class="error">Editor empty</span>').insertAfter($(tinyMCE.get('tinyeditor').getContainer())); 

To jednak spowoduje utworzenie nowego span każdym razem, gdy użytkownik kliknie przycisk Prześlij, więc prawdopodobnie będziesz chciał mieć komunikat o błędzie pojemnik z unikalnym id i sprawdź, czy kontener już istnieje przed włożeniem go.

Edytuj 2: Updated fiddle.

+0

@Victor: Świetnie, mogę to zrobić, ale moim problemem jest umieszczanie tego ciągu obok tinyMCE. Nie wiem jak uzyskać klasę/identyfikator tinymCe, więc mógłbym zrobić coś takiego jak $ (". Errormrssage"). AppendTo ("class/id of tinyMCEEditor"); – Mike

+0

@Mike: Zobacz dodany kod. – Viktor

+0

@Victor: Dodałem ten kod, ale wygląda na to, że do usunięcia wiadomości potrzebne jest coś więcej. Http://jsfiddle.net/bvNMc/13/ – Mike

0

getContent() jest droga. Możesz po prostu użyć obiektu tinyMCE.activeEditor i zadzwonić pod numer getContent() lub pobrać instancję edytora według id, tak jak robisz.

Wygląda na to, że masz identyfikator w swoim identyfikatorze, który prawdopodobnie powoduje problem.

tinyMCE.get('tinyedotor').getContent(); 

powinny prawdopodobnie:

tinyMCE.get('tinyeditor').getContent(); 
+0

to było tylko literówka tutaj, ale mój kod jest poprawny, czy sprawdziłeś skrzypce – Mike

+0

Tak, nie widziałem żadnych wywołań 'getContent', tylko wywołanie' setContent'. Czy patrzę na właściwy kod? Ponadto obecnie wyświetla błąd: "Uncaught SyntaxError: nieoczekiwany identyfikator" – buley

1

Co chcesz, możesz łatwo zrobić. Jej jest link to a fiddle z moim rozwiązaniem.

+0

Wiadomość edytora pustego musi być zgodna z górną linią edytora tinyMCE, a teraz znajduje się w środku. Mogę używać pozycji absolutnej i używać wymiarów górnego i lewego, ale to będzie przeszkadzać, ponieważ moja strona ma 3 edytory tinymce i tylko jedna jest wyświetlana w oparciu o jakąś logikę. Czy możemy mieć ten komunikat edytora w pierwszym wierszu w wyrównaniu z polem tinyMCE. – Mike

+0

@Mike: Wyrównywanie zawartości komórki tabeli dla komórki tabeli zawierającej komunikat o błędzie: ''. – Viktor

+0

@Viktor: ale mam układ div. – Mike

7

Można to zrobić, aby sprawdzić, czy zawartość jest pusta bez parsowania HTML:

var content = tinymce.get('tinymceEditor').getContent({format: 'text'}); 
if($.trim(content) == '') 
{ 
    // editor is empty ... 
} 
+0

Bardzo przydatne, ponieważ jeśli są jakieś białe spacje, to w formacie html nie są już liczone jako puste. – Memochipan

+0

Będzie to bardziej przydatne, gdy usuniesz filtrowanie formatu '{format: 'text'}}, ponieważ czasami użytkownik nie pisze niczego poza wstawieniem pliku/obrazu. –

1

Używanie getContent() jest właściwa droga, ale co zrobić, jeśli użytkownik wprowadzi przestrzeń !! ??
Oto kompletne rozwiązanie z regex -

var content = tinyMCE.get('tinyeditor').getContent(), patt; 

      //Here goes the RegEx 
      patt = /^<p>(&nbsp;\s)+(&nbsp;)+<\/p>$/g; 

      if (content == '' || patt.test(content)) { 
       $('.bgcolor').css("border", "1px solid Red") 
       return false; 
      } 
      else { 
       $('.bgcolor').removeAttr("style") 
       return true; 
      } 

Uwaga: („.bgcolor”) to nic innego div wokół «tinyeditor» mieć czerwone obramowanie, gdy wystąpi walidacji.