Javascript 对Textarea的内容使用.match()
我做了一些搜索,发现了一些类似于我的问题,但我希望有一个解决方案来纠正我之前存在的代码 如果您想了解整个过程,请看下面的代码笔: 问题是,我无法让匹配函数与textarea一起工作,这样用户就可以在框中键入他们想要的任何内容,而这就是代码试图匹配的内容。我尝试创建一个返回框的文本内容的变量(就像您在那里看到的childText变量),但它只匹配一次,并且不进行计数Javascript 对Textarea的内容使用.match(),javascript,jquery,Javascript,Jquery,我做了一些搜索,发现了一些类似于我的问题,但我希望有一个解决方案来纠正我之前存在的代码 如果您想了解整个过程,请看下面的代码笔: 问题是,我无法让匹配函数与textarea一起工作,这样用户就可以在框中键入他们想要的任何内容,而这就是代码试图匹配的内容。我尝试创建一个返回框的文本内容的变量(就像您在那里看到的childText变量),但它只匹配一次,并且不进行计数 如果能在正确的方向上提供帮助,我们将不胜感激。很抱歉,我对jQuery或其他相关的东西不太在行。您在问题中给出的示例与您的代码笔有重
如果能在正确的方向上提供帮助,我们将不胜感激。很抱歉,我对jQuery或其他相关的东西不太在行。您在问题中给出的示例与您的代码笔有重要区别。在您的问题中,您有一个要传递到
.match()
的正则表达式文本,在您的代码笔中,您要传递一个字符串到.match()
您需要做的是使用new RegExp()
创建一个新的正则表达式,并将全局标志传递给它。
代码如下所示:
$('#ST_txt_write').keyup(function(){
var childText = $('#ST_cmp_body').val();
var KW = $('#ST_KW_txt').val();
var regex = new RegExp(KW, 'g'); // <--- This creates a regex from the string in KW
var count = (childText.match(regex) || []).length; // <-- Use regex here instead of string
$('#ST_KW').html(count);
});
关键词:
#找到的关键字的数目:
您在问题中给出的示例与您的代码笔有重要区别。在您的问题中,您有一个要传递到.match()
的正则表达式文本,在您的代码笔中,您要传递一个字符串到.match()
您需要做的是使用new RegExp()
创建一个新的正则表达式,并将全局标志传递给它。
代码如下所示:
$('#ST_txt_write').keyup(function(){
var childText = $('#ST_cmp_body').val();
var KW = $('#ST_KW_txt').val();
var regex = new RegExp(KW, 'g'); // <--- This creates a regex from the string in KW
var count = (childText.match(regex) || []).length; // <-- Use regex here instead of string
$('#ST_KW').html(count);
});
关键词:
#找到的关键字的数目:
.text()
用于具有innerText的元素(即
等)<例如,code>和
具有值(.val()
),而不是文本。看到这里你想匹配什么了吗?嗨-我刚刚又试了一次val(以前有过),但它仍然只匹配一次:$('ST#u txt_write').keyup(function(){/code>
var count=(childText.match(KW)\[]).length;$(“#ST#u KW”).html(count)
.text()
用于具有内部文本的元素(即等)。
和例如具有值(.val()
),而不是文本。请看这里您试图匹配什么?嗨-我刚刚再次尝试了val(以前有过这个)它仍然只匹配一次:$('ST#u txt_write').keyup(function(){/code>var childText=$('ST#u cmp_body').text();
var KW=$('ST#KW txt').val()
var count=(childText.match(KW)| 124;[]).length;
$('ST#ST#KW html(count code>)
非常酷,谢谢你也正确地解释了我的问题-我一定是措辞不好。我不得不将childText变量改为.text而不是.val,因为这实际上是在监视preview div而不是composing textarea,但它工作得很好。我还可以在这段代码的基础上完成一些其他事情,因此谢谢。@Joel啊,使用.text()是有道理的
现在,因为您是从div而不是textarea中提取它。我将相应地更新我的答案。很高兴这个解决方案对您有效!非常酷,感谢您正确解释我的问题-我的措辞一定很糟糕。我必须将childText变量改为.text而不是.val,因为这实际上是在监视p查看div而不是编写textarea,但它工作得很好。我还可以在此代码的基础上完成其他一些事情,所以谢谢您。@Joel啊,使用.text()很有意义
现在,因为您是从div而不是文本区域提取它。我将相应地更新我的答案。很高兴这个解决方案对您有效!