Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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_Css - Fatal编程技术网

Javascript 键入时转换为大写字母,但有一定的延迟

Javascript 键入时转换为大写字母,但有一定的延迟,javascript,jquery,css,Javascript,Jquery,Css,我使用以下代码在键入时转换为大写 $(".input_capital").live('keypress', function(e) { var defaultStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; var checkstr = $(this).val(); var str1 = ''; for (i = 0; i < checkstr.length; i++)

我使用以下代码在键入时转换为大写

      $(".input_capital").live('keypress', function(e)
      {
        var defaultStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        var checkstr = $(this).val();
        var str1 = '';
        for (i = 0; i < checkstr.length; i++)
        {
            var ch = checkstr.charCodeAt(i);
             if (ch>=97 && ch<=122){
                str1 += defaultStr.charAt(ch-97);
             }else{
                str1 += checkstr.charAt(i);
              }
        }
        $(this).focus();
        $(this).val(str1);
     });
所有这些代码都运行良好。但对于能够在一段时间内查看小写字母的用户来说。在此之后,只有它转换为大写

我尝试了css中的“
文本转换:大写”
。但它在三星tab和安卓操作系统中不起作用。请任何人帮助我通过脚本实现此目标。

尝试:

$(".input_capital").live('keypress', function(e) {
    setInterval("$(this).val($(this).val().toUpperCase())",100);      
});

你为什么不加这一行

$(this).val($(this).val().toUpperCase());
$(this.focus()之前?使用
on()
而不是
live()

如果你不在乎ie你可以试试:

$(".input_capital").on('keydown', function(evt) {
  $(this).val(function (_, val) {
    return val + String.fromCharCode(evt.which).toUpperCase();
  });

  return false;
});​

它有一些缺陷,但我认为这个想法是明确的,可以建立在它的基础上



更好的版本,但是请注意IE中不支持的
输入
事件如何使用keyup而不是keypress

$(".input_capital").live('keyup', function(e)
  {
       $(this).val($(this).val().toUpperCase());
  });
这样,密钥一释放,最后一个字母就被更改

像这样:

扩展

此扩展负责: 退格:
8

选项卡:
9

输入:
13

箭头键:
37,38,39,40


使用
bind
cause是使用
jQuery 1.5.1

的,用于那些使用jQuery的更高版本将live替换为on的用户。 例如

现在是

$(".input_capital").on('keyup', function(e)  {
   $(this).val($(this).val().toUpperCase());
});

注意:这个答案毫不拖延。.如果你想避免Jquery

试一试


js

$('.input_capital').on('blur', function(evt) {
  $(this).val(function (_, val) {
    return val.toUpperCase();
  });
});
html



遵循以下步骤:

您希望转换是即时的吗?最好使用围绕转换的函数,而不是字符串。我使用的是jquery 5.1。因此,由于一些插件问题,我不能使用jquery的更高版本。您能建议除on之外的任何其他活动吗。@techfoobar认为op的意思是
1.5.1
我正在使用jquery 5.1。因此,由于一些插件问题,我不能使用jquery的更高版本。你能不能建议其他的活动呢?这很好,有一个问题。我不能在中间打字。它将仅在末尾显示键入的字符,并且箭头键、后退键和删除键也不工作chrome@RamarajKaruppusamy这是意料之中的。如果你想修改这一点,你需要做大量的工作(基本上只是为了IEA,你不能按
delete
按钮。如果你按delete按钮,它会显示一些字符。live不再可用,但在2012年:)l o l Damann!!有时我们想通过使用所有jquery东西来显示我们有多聪明,看看这个
lol
,来看看这个
lol
,这只给出了文本大写/小写的外观。如果您将该值发送到服务器,它的大小写将是混合的。@DomenicD。是的,我在向服务器提交数据时遇到了问题
$(".input_capital").bind('keydown', function(event) {
    if ( $.inArray( event.keyCode, [8,9,13,37,38,39,40]) === -1 ) {
        $(this).val(function(i, val) {
            return val + String.fromCharCode(event.keyCode).toUpperCase();
        });
        return false;
    }
});
 $(".input_capital").live('keyup', function(e)  {
   $(this).val($(this).val().toUpperCase());
});
$(".input_capital").on('keyup', function(e)  {
   $(this).val($(this).val().toUpperCase());
});
<input type="text" style="text-transform: uppercase">
$('.input_capital').on('blur', function(evt) {
  $(this).val(function (_, val) {
    return val.toUpperCase();
  });
});
<input type="text" class="input_capital" style="text-transform: uppercase" />