如何使用'keyup'事件将小写字母更改为大写?
我的目标是使用jQuery事件.keyup()将input的小写字符转换为大写字母。
我怎样才能做到这一点?
Plain ol'javascript:
var input = document.getElementById('inputID'); input.onkeyup = function(){ this.value = this.value.toUpperCase(); }
Javascript与jQuery:
$('#inputID').keyup(function(){ this.value = this.value.toUpperCase(); });
用这种方式改变用户input的唯一问题是,如何让terminal用户感到不安(他们会短暂地看到小写字母跳转到大写字母)。
您可能想要考虑的是将以下CSS样式应用于input字段:
text-transform: uppercase;
这样,input的任何文本总是以大写字母出现。 唯一的缺点是这是一个纯粹的视觉变化 – input控件的值(当在代码中查看时)将保持原来input的情况。
简单的解决这个问题,强制inputval().toUpperCase(); 那么你已经得到了两全其美。
$(document).ready(function() { $('#yourtext').keyup(function() { $(this).val($(this).val().toUpperCase()); }); }); <textarea id="yourtext" rows="5" cols="20"></textarea>
假设你的html代码是:
<input type="text" id="txtMyText" />
那么jQuery应该是:
$('#txtMyText').keyup(function() { this.value = this.value.toUpperCase(); });
jQuery的:
var inputs = $('#foo'); inputs.each(function(){ this.style.textTransform = 'uppercase'; }) .keyup(function(){ this.value = this.value.toUpperCase(); });
- 将input的样式设置为大写(所以用户看不到更改)
- 自动调整值(所以用户不必保持移位或使用大写locking)
随着占位符文本越来越受到支持,此更新可能是相关的。
我的问题与其他答案是,应用text-transform: uppercase
CSS也将大写的占位符文本,我们不想要的。
要解决这个问题,这有点棘手,但值得的净效应。
-
创build文本 – 大写的类。
.text-uppercase { text-transform:uppercase; }
-
绑定到keydown事件。
绑定到keydown事件对于在angular色可见之前添加类是很重要的。 绑定到按键或键盘上留下小写字母的短暂闪烁。
$('input').on('keydown', function(e) { // Visually Friendly Auto-Uppercase var $this = $(this); // 1. Length of 1, hitting backspace, remove class. if ($this.val().length == 1 && e.which == 8) { $this.removeClass('text-uppercase'); } // 2. Length of 0, hitting character, add class. if ($this.val().length == 0 && e.which >= 65 && e.which <= 90) { $this.addClass('text-uppercase'); } });
-
提交到服务器时转换为大写。
var myValue = this.value.toUpperCase();
YMMV,您可能会发现使用删除键删除文本或删除文本可能不会删除该类。 您可以修改keydown以考虑到删除字符。
另外,如果只有一个字符,并且当前的光标位置位于0,则按下退格将删除文本转换类,但是由于光标位置位于0,因此不会删除单个字符。
这将需要更多的工作来检查当前的字符位置,并确定删除或退格键是否会实际删除单个剩余的字符。
尽pipe对于我们最常见的用例来说,做出这些额外的努力是非常值得的,但是超出这个范围并不是必要的。 🙂
以上的答案是相当不错的,只是想为此添加简短的表格
<input type="text" name="input_text" onKeyUP="this.value = this.value.toUpperCase();">
这对我有效
jQuery(document).ready(function(){ jQuery('input').keyup(function() { this.value = this.value.toLocaleUpperCase(); }); jQuery('textarea').keyup(function() { this.value = this.value.toLocaleUpperCase(); }); });
确保该字段在其html中具有该属性。
ClientIDMode="Static"
我成功地使用这个代码来改变大写字母
$(document).ready(function(){ $('#kode').keyup(function() { $(this).val($(this).val().toUpperCase()); }); }); </script>
在你的html标签bootstraps
<div class="form-group"> <label class="control-label col-md-3">Kode</label> <div class="col-md-9 col-sm-9 col-xs-12"> <input name="kode" placeholder="Kode matakul" id="kode" class="form-control col-md-7 col-xs-12" type="text" required="required" maxlength="15"> <span class="fa fa-user form-control-feedback right" aria-hidden="true"></span> </div> </div>
我使用telerik radcontrols,这就是为什么我find一个控件,但你可以直接find控制:$('#IdExample')。css({
这段代码适合我,我希望能帮助你,对不起我的英文。
代码的Javascript:
<script type="javascript"> function changeToUpperCase(event, obj) { var txtDescripcion = $("#%=RadPanelBar1.Items(0).Items(0).FindControl("txtDescripcion").ClientID%>"); txtDescripcion.css({ "text-transform": "uppercase" }); } </script>
代码ASP.NET
<asp:TextBox ID="txtDescripcion" runat="server" MaxLength="80" Width="500px" onkeypress="return changeToUpperCase(event,this)"></asp:TextBox>