-
19-09-2019 - |
题
我想有将改变为大写上KEYUP的输入。所以我附上KEYUP一个简单的事件。
HTML
<input id="test"/>
的Javascript(与jQuery)
$("#test").keyup(function(){
this.value = this.value.toUpperCase();
});
但是,我发现,在镀铬和IE,当你推左箭头,则光标自动移动到结束。我注意到,如果输入的只是信口应检测。我应该使用键码范围或正则表达式检测?
解决方案
或者你可以用下面的(这可能是更快,更优雅):
<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();
}
});
不隶属于 StackOverflow