2012-03-05 37 views
1

我有一个text box,我对text box输入数据,我想要做的是:如果我将进入4 charactersskip that text box by pressing TAB key然后一个警报会为"data should be more than 4 characters",然后文本框将是auto refreshed。如果输入的数据超过4个字符,则不会发出警报,但我正在尝试onkeyup事件,但有些地方我做错了。任何帮助请警报和自动刷新文本框,如果长度为4

+0

“自动刷新”是什么意思? – ajax333221 2012-03-05 05:12:52

+0

你能显示你的代码吗? – 2012-03-05 05:13:02

+0

@ ajax333221自动刷新意味着文本框将再次为空,用户必须再次输入数据到该文本框中。如果输入的数据超过4个字符,则一切正常,但如果输入的数据是4或小于4,则警报将出现以及文本框将变为空 – Tom 2012-03-05 05:15:41

回答

2

我不知道你的意思是“那么文本框会自动刷新”,所以我会猜测你想把光标放回该字段。至于Tab键出来的时候检查值的长度你想要的.change().blur()事件:

$("input[type=text]").change(function() { 
    if (this.value.length <= 4) { 
     alert("Please enter more than 4 characters."); 
     this.focus(); 
     return false; 
    } 
}); 

演示:http://jsfiddle.net/XHKRh/

模糊事件将每隔焦点离开现场时触发;如果用户立即再次跳出该字段而不更改它,则不会再次触发更改事件。我更喜欢在表单提交时使用更改和额外的验证,以便用户不会收到警报(尽管实际上我不会显示任何提醒,我会将该消息放在下一页上到现场)。

+0

谢谢你的回答,但是我发现在警报之后,我仍然可以继续阅读下一个文本框,警报即将到来,但是警报重点应该保留在该文本框中移动到下一个文本框,我认为你的小提琴需要轻微的编辑 – Tom 2012-03-05 05:19:46

+0

看到我更新的答案。使用'.blur()'而不是'.change()'会做你想做的事情,但是(正如我在更新中所说的)我更喜欢另一种方法。 – nnnnnn 2012-03-05 05:22:47

+0

好的,让我试试这个 – Tom 2012-03-05 05:23:00

1

如何在blur

var el = $('#textbox').blur(function(e) { 
    if (el.val().length > 4) { 
     return; 
    } 

    el.focus(); 
    alert('data should be more than 4 characters'); 
}); 

请注意,这种技术会导致糟糕的用户体验。显示与您的元素内联的消息将优于阻止用户与其他任何事物交互。

+0

非常感谢Eli的回复,请让我试试你的代码 – Tom 2012-03-05 05:23:45

0

有一些可能导致你有意思的观点:

  • 你不应该只依赖于JavaScript来验证形式,用户可以把它关闭 并绕过验证
  • 有一种maxlength属性输入
  • 您可能正在寻找onblur而不是让TAB键的作用,因为用户 可以通过其他方式更改焦点
+0

是的,你是对的,我不应该只依靠javascript,那么我该如何解决这个JavaScript关闭问题? – Tom 2012-03-05 05:25:12

+0

@你可以用服务器端语言进行验证,(我最喜欢的是PHP,但还有很多其他的)。但是,在生死攸关的情况下,您应该使用这种额外的措施,在这种情况下,注入物质会对您造成很大的问题 – ajax333221 2012-03-05 05:30:25

+0

“生命或死亡时”?您应该在您的服务器端代码中进行_always_验证。 – nnnnnn 2012-03-05 05:34:59