jQuery在输入框获取焦点时清空文本

12

我有这个jQuery脚本:

$(document).ready(function() {
    $(':input:enabled:visible:first').focus();
    $('.letters').keyup( function() {
        var $this = $(this);
        if($this.val().length > 1)
            $this.val($this.val().substr(0, 1));
            $(this).next('input').focus();
        });
});
它将在页面加载时设置焦点于第一个 input='text' 字段。当用户输入字符时,它将移动到下一个输入字段。它还限制了每个字段中允许的字符数(目前为1个字符)。
我想知道是否有可能在焦点上清除输入字段的当前值。无论是当用户用光标点击聚焦字段,还是当 $(this).next('input').focus(); 将焦点设置为下一个输入字段时。
此外,是否可能验证字符以仅允许字母字符?
3个回答

16

使用过滤器来过滤输入:

​$('input').on('keydown', function(e) {
    if( !/[a-z]|[A-Z]/.test( String.fromCharCode( e.which ) ) )
        return false;
});​​​​​​​​

要在 clickfocus 时清除输入框中的内容,请使用

$('input').on('click focusin', function() {
    this.value = '';
});

请注意,当你点击一个当前未聚焦的输入控件时,此事件将会触发两次。

示例: http://jsfiddle.net/xbeR2/


keydown 函数给了我 SyntaxError: illegal character }); - David
可能是这样。那我会再仔细看看!谢谢。 - David
1
@David:添加了演示链接。 - jAndy
能否在验证中排除退格键和删除键? - David

11

回答你的问题,是的,你可以这样做:

$("input").focus(function() {
  this.value = "";
});

回答“只允许字母”的问题,这个问题在之前已经被问过了,参考这里这里这里


谢谢。它像魔法一样奏效!我也会查看你的链接。 - David
@David,很高兴你解决了它。不要忘记将其中一个解决方案标记为已接受的答案,以便其他人知道你的问题已经得到解决。 - Jason Towne

0
使用这个。
$( document ).ready(function() {
  var search_text_s = "WYSZUKAJ";

  // author ZMORA
  // search input focus text
  $("#searchClear").focus(function() {
    if(this.value == search_text_s){
      this.value = "";
    }
  }).blur(function() {
    if(this.value != search_text_s){
      this.value = search_text_s;
    }
  });
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接