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