键盘事件触发文档加载

时间:2014-08-19 13:02:00

标签: javascript jquery

的jsfiddle     http://jsfiddle.net/m3g6rjok/1/

HTML

<textarea id="feedback" rows="4" cols="50" name="comment" maxlength="50">Enter text here...</textarea>
<br>
<input type="text" value="10" id="lenbox"></input>

JS

$(document).ready(function(){

  $( "#feedback" )
  .keyup(function() {
    var value = $( this ).val();
      alert(value)
    $( "#lenbox" ).val( value );
  })
  .keyup();

})

我需要计算在textarea上输入的单词数量,并且需要在下面的文本框中显示它。我正在使用keyup事件进行检查,但即使在页面加载时它也会被触发。我该如何解决呢?

6 个答案:

答案 0 :(得分:4)

从代码中删除.keyup();。这会在页面加载时触发keyup事件。

答案 1 :(得分:4)

引发keyup事件是因为您触发了一个事件。在处理程序函数声明后删除.keyup()

$("#feedback").keyup(function() {
    var value = $(this).val();
    alert(value)
    $("#lenbox").val(value);
})

答案 2 :(得分:1)

因为你在JQuery语句的末尾有.keyup(); 只需删除它

答案 3 :(得分:0)

您不应再次触发keyUp。此外,您应该移动更新keyUp函数之外的值的代码,这样您也可以在页面加载时触发代码。在你完成之后,它只是取一个字符串,分隔空格并计算单词:

var calculateCount = function() {
  var value = $('#feedback').val();
  var count = value.split(" ").length;
  $( "#lenbox" ).val( count );
};

$(document).ready(function(){
  $("#feedback").keyup(calculateCount);
  calculateCount();
})

http://jsfiddle.net/qd6aznwa/

答案 4 :(得分:0)

DEMO

首先,按照已经指出的方式删除.keyup() 然后,使用input代替keyup,以便我也能抓住粘贴的文字。 最后,使用split方法和length属性计算单词数。

$(document).ready(function(){  
    $( "#feedback" ).on('input',function() {            
        $( "#lenbox" ).val( this.value.split(' ').length );
    });    
});

答案 5 :(得分:-1)

如果您不介意使用HTML5,请使用占位符属性

<textarea id="feedback" rows="4" cols="50" name="comment" maxlength="50"  placeholder="Enter text here..."></textarea>