Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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 jQuery将事件作为参数发送_Javascript_Jquery - Fatal编程技术网

Javascript jQuery将事件作为参数发送

Javascript jQuery将事件作为参数发送,javascript,jquery,Javascript,Jquery,我想使用keyup和keydown检查输入中键入的字符数。 我以前做过,但不是作为单独的函数,它在代码中是一个很大的混乱。我用 事件当我在没有单独函数的情况下执行时,一切都很好,但现在我在通过函数发送时遇到了问题。也许这是完全错误的方法造成的,所以请给我一些建议,如何正确地做 这是我的单独功能: function char_check($input_id, $div_id, $char_max, event) { if(($char_max-$($input_id).val().le

我想使用
keyup
keydown
检查输入中键入的字符数。 我以前做过,但不是作为单独的函数,它在代码中是一个很大的混乱。我用
事件
当我在没有单独函数的情况下执行时,一切都很好,但现在我在通过函数发送时遇到了问题。也许这是完全错误的方法造成的,所以请给我一些建议,如何正确地做

这是我的单独功能:

function char_check($input_id, $div_id, $char_max, event)
{


    if(($char_max-$($input_id).val().length)<=0)
    {   
        var key = event.keyCode || event.charCode;
        if(key!=8)
        {
            event.preventDefault();
        }
    }


    if(($char_max-$($input_id).val().length)<0)
    {
        $($div_id).text("Your data will be cut short!");
    }
    else
    {
        $($div_id).text($char_max-$($input_id).val().length);
    }

}
$('input[name=author]').keydown(function(e){

char_check($(this), "#chars_auth", 50, e);

});

问题:事件不起作用。

据我所知,代码不起作用,但我不确定什么不起作用。这里有一些建议。首先,我将创建一个函数来构建“check函数”。比如:

var createCharCheck = function (div_id, char_max) {

  return function (event)  {
    if ((char_max - $(this).val().length) <= 0) {   
      var key = event.keyCode || event.charCode;
      if(key != 8) {
        event.preventDefault();
      }
    }

    if((char_max - $(this).val().length) < 0) {
      $(div_id).text("Your data will be cut short!");
    } else {
      $(div_id).text(char_max - $(this).val().length);
    }
  }

}

$('input[name=author]').keydown(createCharCheck('#chars_auth', 50));
var createCharCheck=函数(div\u id,char\u max){
返回函数(事件){

如果((char_max-$(this.val().length)我真的看不到这里的问题?!也许制作一个jsfiddle.net可以帮助说明您的问题。“我在通过函数发送它时遇到问题”.事件不起作用。好的-1从我这里来。一切似乎都很好。检查你的控制台奇迹!奇迹!就是这样,把你的坏代码放入stackoverflow,它会起作用的,伙计们,现在它起作用了,这不是一个玩笑!小建议..你应该始终尝试使每一段代码都可重用,这样它就不会变成“大混乱”。我的建议是只返回数字并在keydown listener中显示。这样,您也可以将其用于其他用途。或者更好的做法是,将其添加到jquery中。请参阅:
$(“#chars_auth”).text($(This).getRemainingLength(e,50));
谢谢您的回答!:)