我想有将改变为大写上KEYUP的输入。所以我附上KEYUP一个简单的事件。

HTML

<input id="test"/>

的Javascript(与jQuery)

$("#test").keyup(function(){
  this.value = this.value.toUpperCase();
});

但是,我发现,在镀铬和IE,当你推左箭头,则光标自动移动到结束。我注意到,如果输入的只是信口应检测。我应该使用键码范围或正则表达式检测?

例: http://jsbin.com/omope3

有帮助吗?

解决方案

或者你可以用下面的(这可能是更快,更优雅):

<input style="text-transform: uppercase" type='text'></input>

但是,发送作为类型的值回到形式数据,所以使用的下列任一以将其存储在数据库中全部大写:

的MySQL:UPPER(str)

PHP:strtoupper()

其他提示

另一种解决方案,如果使用的文本变换:大写; CSS属性:

<input id='test' style='text-transform: uppercase;' type='text'></input>

和使用jQuery帮助您选择的模糊事件

$("#test").blur(function(){
  this.value = this.value.toUpperCase();
});

使用此解决方案,就不必上的数据库字段,则可以使用光标移动,并且用户可以插入/重写在输入字段中的文本。

使用这样的:

<input onkeyup="MakeMeUpper(this)" type="text"/>

而在你的JS代码部分提出:

function MakeMeUpper(f, e){ 
  var actualValue = f.value;        
  var upperValue = f.value.toUpperCase();
  if( actValue != upperValue){
    f.value = upperValue;       
  }   
}
如果用户输入的东西是不文本(左或右箭头)

这个代码将不会改变的文本。

对,看起来像当该值被更新某些浏览器将光标移动到最后。你可以这样做:

$("#test").keyup(function(){
  var upper = this.value.toUpperCase();
  if (this.value != upper) 
      this.value = upper;
});

这将只改变值,如果需要改变它。然而,仍然留给你,如果你键入abd,向左移动,打c得到abcd问题,光标也将无法移动到终点。

的Javascript(与jQuery)

$("#test").keyup(function(){
  $(this).val($(this).val().toUpperCase());
});
var str = $(this).val();
if (evt.keyCode != 37 && evt.keyCode != 39)
{
    str = str.toLowerCase().replace(/\b[a-z]/g, function(letter) {
        return letter.toUpperCase();
    });
    $(this).val(str);
}

您可能想看看的密钥代码你KEYUP功能。

var UP_ARROW = 38,
    DOWN_ARROW = 40;

$('#test').keyup(function(evt){
    if (evt.keyCode == UP_ARROW)
    {
        this.value = this.value.toUpperCase();
    }

    if (evt.keyCode == DOWN_ARROW)
    {
        this.value = this.value.toLowerCase();
    }
});
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top