原來的代碼代碼如下
復制代碼代碼如下:
<script language = "javascript">
<!--
function checkForm(){
if (document.form1.content.value==""){
alert("請輸入內容!");
return false;
}
return true;
}
//-->
</script>
<form name="form1" method="post" action="" onsubmit="return checkForm();">
<FCK:editor id="content" basePath="fckeditor/" height="350" >
</FCK:editor>
<input type="submit" name="Submit" value="發布">
</form>
這樣是我們寫程序中最經常的寫法 提交之前進行驗證內容是否為空!
使用了編輯器以后 在第一次按提交按鈕的時候 總是獲取不到編輯器的值 內容已經輸入 可是content并沒有任何值!需要我們再次點提交按鈕 content 才能獲取到值!
對于這個問題 好多人都覺得困惑!有寫是用JS去讀取輸入域中的HTML內容!可是這只對全JS版本的fckeditor 才有效果 對 JSP版本的 并不起作用!對于這樣的狀態 也只能怪fckeditor開發者了!而代碼太多太麻煩 想要修改其核心談何容易!
本人經過不斷的測試 現得到一個方法可以解決次問題!先拿出來大家分享
改寫代碼如下
復制代碼代碼如下:
<script language = "javascript">
<!--
function checkForm(){
setTimeout("SendForm()",50);
return false;
}
function SendForm(){
if (document.form1.content.value==""){
alert("請輸入內容!");
return;
}
document.form1.submit();
}
//-->
</script>
<form name="form1" method="post" action="" onsubmit="return checkForm();">
<FCK:editor id="content" basePath="fckeditor/" height="350" >
</FCK:editor>
<input type="submit" name="Submit" value="發布">
</form>
修改成這樣的目的是因為編輯器已經監視了onsubmit這個事件 是要在提交以后才把跟新的內容置入隱藏域content 中,原先的來不及置入內容便已經執行了驗證事件所以當然取不到及時的內容!
//==============================================
以上內容為轉帖,不過經過我實際工作的檢驗,有效。