Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对Textarea的内容使用.match()_Javascript_Jquery - Fatal编程技术网

Javascript 对Textarea的内容使用.match()

Javascript 对Textarea的内容使用.match(),javascript,jquery,Javascript,Jquery,我做了一些搜索,发现了一些类似于我的问题,但我希望有一个解决方案来纠正我之前存在的代码 如果您想了解整个过程,请看下面的代码笔: 问题是,我无法让匹配函数与textarea一起工作,这样用户就可以在框中键入他们想要的任何内容,而这就是代码试图匹配的内容。我尝试创建一个返回框的文本内容的变量(就像您在那里看到的childText变量),但它只匹配一次,并且不进行计数 如果能在正确的方向上提供帮助,我们将不胜感激。很抱歉,我对jQuery或其他相关的东西不太在行。您在问题中给出的示例与您的代码笔有重

我做了一些搜索,发现了一些类似于我的问题,但我希望有一个解决方案来纠正我之前存在的代码

如果您想了解整个过程,请看下面的代码笔:

问题是,我无法让匹配函数与textarea一起工作,这样用户就可以在框中键入他们想要的任何内容,而这就是代码试图匹配的内容。我尝试创建一个返回框的文本内容的变量(就像您在那里看到的childText变量),但它只匹配一次,并且不进行计数


如果能在正确的方向上提供帮助,我们将不胜感激。很抱歉,我对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而不是文本区域提取它。我将相应地更新我的答案。很高兴这个解决方案对您有效!