我做了一些搜索,发现了一些类似于我的问题,但我希望有一个解决方案可以纠正我之前存在的代码。
如果你想看到整件事,可以使用以下代码:http://codepen.io/JTBennett/pen/ygyZwE
$('#ST_txt_write').keyup(function(){
var childText = $('#ST_cmp_body').text();
var count = (childText.match(/hi/g) || []).length;
$('#ST_KW').html(count);
});
问题在于我无法使用匹配函数来处理textarea,因此用户可以在框中键入他们想要的内容,这将是代码寻求匹配的内容。我尝试创建一个返回框的文本内容的变量(就像你在那里看到的childText var一样),但这只会匹配一次而不是计数。
对于正确方向的任何帮助都将非常感激。对不起,我对jQuery或其他任何事情都不是很了解。
答案 0 :(得分:1)
您在问题中提供的示例与您的codepen有重要区别。在你的问题中,你有一个你正在传递给.match()
的正则表达式字面值,并且在你的codepen中,你将一个字符串传递给.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);
});
这是一个有效的例子:
$(function() {
$('#ST_txt_write').keyup(function() {
var childText = $('#ST_cmp_body').val();
var KW = $('#ST_KW_txt').val();
var regex = new RegExp(KW, 'g');
var count = (childText.match(regex) || []).length;
$('#ST_KW').text(count);
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="ST_txt_write">
<textarea id="ST_cmp_body" style="height: 200px; width: 300px;"></textarea>
</div>
<div>
Keywords:
<input type="text" id="ST_KW_txt" />
</div>
<div>
# of Keywords Found: <span id="ST_KW"></span>
</div>
&#13;