好吧,我有一个Javascript函数,它返回我写入textarea的单词数,但由于某些原因,我想用Jquery编写它。而且,虽然我尝试了,但我没有设法得到它,所以这就是为什么我在这里,如果你能帮助我,我将非常非常感激。
这是Javascript:
function contar() {
palabras = 1;
if (document.data.texto.value.length === '') palabras = 0;
for (count = 0; count < document.data.texto.value.length; count++) {
if (document.data.texto.value.substring(count, count + 1) == ' ') palabras++;
}
document.data.cuenta.value = palabras;}
这是我做过的jQuery:
(function () {
var palabras = 1;
if ($("[name=data] textarea[name=texto]").val().length === "") {
palabras = 0;
}
for (i = 0; i < $("[name=data] textarea[name=texto]").val().length; i++) {
if ($("[name=data] textarea[name=texto]").val().substring(i, i + 1) == ' ')) {
palabras++;
}
}
});
最后,这是我用来显示它的HTML:
<form name="data">
<textarea name="texto" cols="40" rows="4" onkeyup="contar()" onkeypress="contar()"></textarea>
<br>
<input type="Text" name="cuenta" size="3" maxlength="3">
</form>
答案 0 :(得分:2)
工作解决方案:
function contar(){
alert($.trim($('[name="texto"]').val()).split(' ').filter(function(v){return v!==''}).length);
}
filter(function(v){return v!==''})
部分删除空字符串。
答案 1 :(得分:1)
我想到的最简单的解决方案如下:
//function
function countWords(tx){
return tx?tx.replace(/ +/g," ").replace(/\w+| $|^ /g,"").length+1:0;
}
//jQuery plugin
$.fn.countWords = function(){
return countWords(this.val()) ;
};
实施例 HTML:
<textarea id="tester"></textarea>
<p>WordsCount:<span id="counter">0</span></p>
JS:
$tester = $("#tester");
$tester.keyup(function(e){
$("#counter").text($tester.countWords());
});
http://jsbin.com/EfukoYIs/3/edit?html,js,output
修改强>
最后,我改变了概念,只计算正确含义的单词(没有特殊的字符等)。代码如下:
//function
function countWords(tx){
return tx.replace(/\w+/g,"x").replace(/[^x]+/g,"").length;
}
答案 2 :(得分:-2)
获取textarea的值,并将其拆分到将为您提供数组的空格字符上。然后返回该数组的长度。
更新表示空字符串http://jsfiddle.net/ghyDs/1/
<script type="text/javascript">
function contar() {
var value = $.trim($('[name="texto"]').val()),
count = value == '' ? 0 : value.split(' ').length;
$('[name="cuenta"]').val(count);
}
</script>