2012-07-22 6 views
5

Ho un modulo che utilizza la convalida non invadente. Recentemente ho cambiato area di testo per usare tiny mce e ora la validazione non funziona.
Ho provato a utilizzare la soluzione da here ma non succede nulla.
Impossibile convalidare TinyMCE in asp mvc

$('#form input[type=submit]').click(function() { 

Non esegue mai. Ecco quello che ho:

@using (Html.BeginForm("Create", "UserAd", FormMethod.Post)) 
{ 
... 
@Html.TextAreaFor(x => x.Description, new { id = "description" })   
... 
<input type="submit" value="Create"/> 
... 

Questo è il codice JS:

$(document).ready(function() { 

     tinyMCE.init({ 
      mode: "textareas", 
      theme: "advanced", 
      skin: "o2k7", 
      height: "250", 
      plugins: "autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template", 


      theme_advanced_buttons1: "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,bullist,numlist", 
      theme_advanced_buttons2: "", 
      theme_advanced_buttons3: "", 
      theme_advanced_buttons4: "", 
      theme_advanced_toolbar_location: "top", 
      theme_advanced_toolbar_align: "left", 
      theme_advanced_resizing: false 
     }); 

     function toggleEditor(id) { 
      if (!tinyMCE.get(id)) { 
       tinyMCE.execCommand('mceAddControl', false, id); 
      } 
      else { 
       tinyMCE.execCommand('mceRemoveControl', false, id); 
      } 
     } 


     // new 
     $(function() { 
      var tinymce = $('#Description'); 

      tinymce.tinymce({ 
       setup: function (e) { 
        e.onInit.add(function() { 
         tinymce.css({ 
          position: 'absolute', 
          height: 0, 
          width: 0, 
          top: -100 
         }).show(); 
        }); 
       } 
      }); 

      $('#form input[type=submit]').click(function() { 
       alert('ss'); 
       tinyMCE.triggerSave(); 
      }); 
     }); 
     // makes form field highlighting work with bootstrap's css 
     $.validator.setDefaults({ 
      highlight: function (element, errorClass, validClass) { 
       $(element).closest('.control-group').addClass('error'); 
      }, 
      unhighlight: function (element, errorClass, validClass) { 
       $(element).closest('.control-group').removeClass('error'); 
      } 

     }); 
     $(function() { 
      // makes form field highlighting work with bootstrap's css on post backs 
      $('.input-validation-error').each(function (i, element) { 
       $(element).closest('.control-group').not('.error').addClass('error'); 
      }); 
     }); 

risposta

3

si specifica un ID di "#form" nel selettore. Prova a rimuovere il # dal tuo selettore.

per esempio,

$('form input[type=submit]').click(function() { 
     alert('ss'); 
     tinyMCE.triggerSave(); 
}); 

Inoltre, se sto leggendo il codice giusto, il TinyMCE è un elemento dinamico. Potresti voler associare l'evento click con la funzione on.

per esempio,

$("body").on("click","#yourFormID", function(e){ 
    your click stuff here 
} 
+0

ho provato e ancora niente – 1110

+0

Qual è l'ID del modulo? Vedi la mia risposta aggiornata. Può essere perché il tuo elemento è dinamico, prova ad usare la funzione on() per il tuo gestore di clic per il mio esempio. –

+0

Ho aggiunto l'id a un modulo e questa funzione ma non ho più fortuna :( – 1110

0

L'errore che si ottiene è esattamente quello che dice. Devi caricare Tiny MCE (non il plugin, il vero affare) prima di jQuery. Questo potrebbe essere il problema.

È possibile verificare se tiny_mce.js è stato effettivamente scaricato? Potresti anche voler controllare this blog. È da parte di qualcuno che ha avuto problemi con Tiny MCE.

0

Poiché TextArea viene nascosto dopo aver applicato il plugin tinyMce e poiché i campi nascosti predefiniti non sono convalidati, è necessario modificare questo valore predefinito. Hai già provato ad aggiungere:

$.validator.setDefaults({ 
ignore: '' 

});

+0

Ho provato e quello e niente, cosa mai faccio piccola area di testo mce non è convalidato – 1110