Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.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事件_Javascript_Jquery - Fatal编程技术网

Javascript事件

Javascript事件,javascript,jquery,Javascript,Jquery,我在这里完全糊涂了。因此,我正在寻找以下问题的解决方案: 我想在输入字段上使用jQuery触发一些函数(现在是一个警报框)。条件是: 输入字段始终保持焦点 输入来自USB设备,其作用与键盘输入类似。因此,对于10个字符,将有10个keydown和keydup事件 输入填写10个字符后,应弹出相应的警报框 现在我面临的问题是,如何发现输入不等于10个字符,因此抛出一个错误警报框。(假设输入中只有5个字符,我如何计算最终计数为5,因为将有5个按键事件)您可以在输入框下方/旁边显示消息,而不是弹出

我在这里完全糊涂了。因此,我正在寻找以下问题的解决方案:

我想在输入字段上使用jQuery触发一些函数(现在是一个警报框)。条件是:

  • 输入字段始终保持焦点
  • 输入来自USB设备,其作用与键盘输入类似。因此,对于10个字符,将有10个keydown和keydup事件
  • 输入填写10个字符后,应弹出相应的警报框

现在我面临的问题是,如何发现输入不等于10个字符,因此抛出一个错误警报框。(假设输入中只有5个字符,我如何计算最终计数为5,因为将有5个按键事件)

您可以在输入框下方/旁边显示消息,而不是弹出警报框。
例如,在每个键控事件上,检查字符串长度,如果不是10,则显示该消息

如果您真的必须求助于警报框,您可以进行超时检查,例如,仅在1000毫秒的关键事件不活动后执行验证。这可能会让用户非常恼火。

试试-

$('#idofinputfield').keyUp(function () {
    var length = $('#idofinputfield').val().length;
    if(length <= 10){
       alert("less than 10");
    }else{
       alert("greaterthan 10");
       }
   });
$('#idofinputfield').keyUp(函数(){
var length=$('#idofinputfield').val().length;

如果(length这里确实有两个问题,一个是理解jQuery语法(参见我答案的第二部分),另一个是-理解何时抛出错误框的最佳方法是什么

首先要回答第二个问题,我的建议是不要使用警报框来警告用户,因为他们往往是模态的,并且确实会中断输入流。其次,正如你所说的,你如何知道这个人何时停止了“键入”。除非你使用某种计时机制(这是非常麻烦的)我的建议是在HTML中使用一个“div”来显示错误,直到达到10个字符为止。一旦出现这种情况,您可以隐藏该div。(当然,在此期间,可以将该div的样式设置为美观。)

那么…如何做到这一点

假设您的输入字段的id为“myField”,如果您使用的是jQuery(位于标记中),您可以这样做

$(function() {
  var keypresses = 0;
  $('#myField').keyUp(function () {
    keypresses++;
    if(keypresses == 10) {
      $('#error').hide(); // This is your div error with some error text in it.
      // Do other stuff.
    } else {
      // Display an error.
    }
  });
或者,如果不想使用KeyPress变量,也可以使用

if($(this).val().length == 10) { }

真正的问题是您正在测量按键事件,因为并非所有按键(即使字段具有焦点)都会在字段中插入字符(例如returnesc)。因此,您需要测量字符串长度,以便在开始执行函数之前验证代码

实际上,您甚至不需要jQuery来完成所需的任务,只需将函数调用绑定到按键事件,并且仅在您的string.length=10时执行函数调用

yourInput.onKeyPress(yourString.length = 10 && yourFunction());

请编辑这个,这不是代码,所以请突出显示它,然后再次按下代码图标使其成为文本。谢谢。我不明白。当有十个字符时,你想要一个警报框,但当没有十个字符时,你也想要一个警报框吗?@sagen,在实际代码中,如果有十个字符,我将进行ajax调用,如果没有,则抛出一个错误,使用上述方法c如果输入字段中的文本是复制粘贴的,则可能会有风险。因为在这种情况下,可能会有1个或没有keyup事件,因此计数器按键不会增加,验证可能会失败。@Alpesh-我同意,但是,原始问题说输入来自一个充当keyup/keyDown事件的USB设备。否则,我将使用“更改”是的,上面的例子没问题,但我只是想提醒一下:)嗨,JasCav,所以在这个keyup事件中,我可以同时处理这两种情况。第一:当输入长度为10个字符时,启动ajax调用。第二:输入长度不是10个字符,显示错误。正确吗?@twch-可以。我更新了我的答案,向您展示了如何做到这一点。(如果要在If/else语句中放置警报框,可以继续操作。同样,我建议使用error div或类似的东西。)