Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.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 Elementor表单的字计数器_Javascript_Wordpress_Counter_Elementor - Fatal编程技术网

Javascript Elementor表单的字计数器

Javascript Elementor表单的字计数器,javascript,wordpress,counter,elementor,Javascript,Wordpress,Counter,Elementor,我正在尝试将字符计数器调整为一个已计数的单词,但是使用了一个空格分隔,从而在限制输入时退出。我将它与Elementor表单textarea一起使用。它一直工作,直到你有50个字,然后所有的东西都消失了,除了50个字符。不确定我做错了什么,而且对javascript来说太新了,我自己也看不到这个问题。谢谢你的帮助 // #form-field-custom_essay // #word_counter var textInput = document.querySelector("

我正在尝试将字符计数器调整为一个已计数的单词,但是使用了一个空格分隔,从而在限制输入时退出。我将它与Elementor表单textarea一起使用。它一直工作,直到你有50个字,然后所有的东西都消失了,除了50个字符。不确定我做错了什么,而且对javascript来说太新了,我自己也看不到这个问题。谢谢你的帮助

    // #form-field-custom_essay
// #word_counter
var textInput = document.querySelector("#form-field-custom_essay");
var wordCounter = document.querySelector("#word_counter p");
var wordLimit = 50;

wordCounter.innerText = wordLimit + " Words Remaining";

textInput.addEventListener("keyup", function(){
    
    var words = textInput.value.split(" ");
    wordCounter.innerText = (wordLimit - words.length) + " Words Remaining";
    
    if(words.length >= wordLimit) {
        words = words.substring(0, wordLimit);
        wordCounter.innerText = "0 Words Remaining";
        wordCounter.style.color = "red";
    } else {
        wordCounter.style.color = null;
    }
  
});
你可以这样做

PS
wordLimit=4
用于快速测试

const wordCounter=document.querySelector('p#word counter span'))
,textInput=document.forms['my-form'].文本区域
,wordLimit=4//或50
;
textInput.value=“”
wordCounter.textContent=wordLimit
textInput.oninput=\u=>//使用输入事件,而不是键控事件
{
让wordsArray=textInput.value.trim().split(/\s+/)//包含所有textInput[real]字的数组
while(wordsArray.length>wordLimit)
{
让wrd=wordsArray.pop()//获取最后一个单词
,pos=textInput.value.lastIndexOf(wrd)//在textarea中找到它
;
textInput.value=textInput.value.substring(0,pos)//在textarea中trunc它
}
wordCounter.style.color=(wordsArray.length


0个剩余单词

子字符串函数提取字符,而不是单词。如果达到限制,您可以尝试禁用文本区域的键入

textInput.addEventListener("keypress", function(e){
    
    var words = textInput.value.split(" ");
    wordCounter.innerText = (wordLimit - words.length) + " Words Remaining";
    
    if(words.length > wordLimit) {
       e.preventDefault()
        wordCounter.innerText = "0 Words Remaining";
        wordCounter.style.color = "red";
    } else {
        wordCounter.style.color = null;
    }
  
});

文本中的50个单词包含50个以上的字符,如果有49个单词,为什么不截断为50个字符呢?逻辑在哪里?我正试图让它停止输入50个字。原始脚本是字符计数器,而不是单词计数器。因此,它将截短回50个字符,而不是停留在50个单词,这是我需要修复的。我使用elementor表单,因此无法添加输出行。我确实有一个带有id word_计数器的文本框,我在原始脚本中瞄准该文本框以显示字数 0字

@Donna有什么问题?你可以按照你想要的任何方式修改我的代码,逻辑是一样的。顺便说一句,你的问题中没有显示你的html,我猜不到,我很抱歉。再说一次,我是新手,并不是故意不包括重要信息。@DonnaTate你应该读,,…这就是我没有得到你证实的答案吗?