2012-08-14 22 views
2

我一直在尋找一個功能來控制在textarea中輸入的最小單詞數量,並且在用戶沒有放置最小單詞數量(250假設),一旦他嘗試提交消息,就會出現警報。jquery - textarea中文字的最小數量

我使用這個主題:http://www.elegantthemes.com/demo/?theme=AskIt

這是怎樣的形式提交:

<form action="<?php echo(get_permalink($post->ID)); ?>#create_new_post" method="post"> 

這是textarea的代碼:

<textarea name="et_newpost_content" id="et_newpost_content" class="input"><?php if (isset($_POST['et_newpost_content'])) echo esc_textarea($_POST['et_newpost_content']); ?></textarea> 
+1

如何使用'$ ('textarea').val()'並檢查它是否爲'lenght'? – 2012-08-14 17:55:14

+1

這是一個比較陳舊但寫得很好(最近更新)的插件,它可以做到這一點:http://keith-wood.name/maxlength.html – 2012-08-14 17:58:34

回答

2

修改你的表單標籤,所以它讀取:

<form onsubmit="checktextarea()" action="<?php echo(get_permalink($post->ID)); ?>#create_new_post" method="post"> 
在JavaScript

那麼,進入

function checktextarea() { 

    var minLength = 15; 

    var $textarea = $('#et_newpost_content'); 
    if($textarea.text().length < minLength) { 
     alert('You need to enter at least ' + minLength ' + characters'); 
     return false; 
    } 
} 

這將阻止提交表單,除非在文本區域中的字符長度比無論您的minLength設置更大。

編輯

我看到我誤解了問題,數字符,而不是單詞。如果你需要的話(和道具@若昂)功能應改爲類似

function checktextarea() { 

    var minLength = 15; 

    var $textarea = $('#et_newpost_content'); 
    if($textarea.text().split(/\s+/).length < minLength) { 
     alert('You need to enter at least ' + minLength + ' words'); 
     return false; 
    } 
} 

split功能使用正則表達式的空格字符在文本區域的文本拆分,並把該到一個數組。然後您檢查數組的長度,看看你是否有足夠的話

EDIT 2

noConflict模式下運行的WordPress站點,該段應如下所示

function checktextarea() { 

    var minLength = 15; 

    var $textarea = jQuery('#et_newpost_content'); 
    if($textarea.text().split(/\s+/).length < minLength) { 
     alert('You need to enter at least ' + minLength + ' words'); 
     return false; 
    } 
} 
+0

看起來,表單將被提交無論哪個功能。這就像提交表單覆蓋所有其他功能的ajax一樣。有任何想法嗎?這是一切發生的地方:[鏈接] http://www.wherescientistsdream.com/?page_id=5 – 2012-08-15 09:57:55

+0

如果有幫助,這裏是原始代碼:[link] http:// jsfiddle。net/9dYzq/ – 2012-08-15 10:00:09

+1

從查看頁面本身,wordpress運行在jQuery noConflict模式下,所以我提供的代碼段拋出錯誤而不是返回false,所以表單繼續並提交。我應該說明這一點;我很抱歉。請參閱編輯。 – cori 2012-08-15 12:00:34

7

你的意思的文字或字符?如果你想數,一個非常幼稚的做法是用空格分割和檢查結果數組的長度:

if ($("#et_newpost_content").text().split(/\s+/).length < 250) { 
    alert('Message must be at least 250 words.') 
} 

如果你的意思字符,那麼它更容易:

if ($("#et_newpost_content").text().length < 250) { 
    alert('Message must be at least 250 characters.') 
} 
+0

我認爲這是個角色,但不能確切地說。 – peacedog 2012-08-14 18:00:28

+0

單詞,而不是字符。 – 2012-08-15 09:42:52