2012-07-22 180 views
5

我有一個使用不顯眼驗證的表單。最近我改變了文本區域使用微小的mce,現在驗證不起作用。
我試圖使用here的解決方案,但沒有任何反應。
無法驗證asp mvc中的TinyMCE

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

從不執行。 在這裏我有什麼:

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

這是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'); 
      }); 
     }); 

回答

3

你是在你選擇指定 「#form」 的ID。嘗試從您的選擇器中刪除#。

E.G,

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

此外,如果我讀正確的代碼,TinyMCE的是一個動態的元素。您可能希望將click事件與on函數綁定。

E.G,

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

我試過了,一看仍然沒有 – 1110 2012-07-22 15:59:34

+0

你叫什麼形式的ID?看到我更新的答案。這可能是因爲你的元素是動態的,請嘗試在我的示例中使用on()函數作爲你的點擊處理程序。 – 2012-07-22 16:02:16

+0

我添加了id到一個窗體和這個函數,但沒有再次運氣:( – 1110 2012-07-22 16:05:48

0

你得到的錯誤正是它說。你需要在jQuery之前加載Tiny MCE(而不是插件,真正的交易)。這可能是問題所在。

您可以檢查tiny_mce.js是否實際下載?您可能還想檢查this blog。它來自也有Tiny MCE問題的人。

0

由於在應用tinyMce插件後TextArea被隱藏,並且由於默認隱藏文件未經驗證,所以您需要更改此默認設置。您是否已經嘗試添加:

$.validator.setDefaults({ 
ignore: '' 

});

+0

我試過了,而且沒有什麼,我做了什麼小小的mce文本區域沒有驗證 – 1110 2012-07-28 14:06:06