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

Javascript 如何在输入时将输入更改为大写

Javascript 如何在输入时将输入更改为大写,javascript,jquery,jsf,Javascript,Jquery,Jsf,我正在使用onkeyup=“this.value=this.value.toUpperCase();”以大写形式更改输入文本值。这是工作,但我的需要是改变输入框中的单个字母,而不使用鼠标事件。如果使用左箭头键向后移动光标,则会触发onkeyup事件并将光标移动到终点。如何修改此脚本,以便可以使用箭头键向后导航并在两者之间的某个位置修改文本 当前代码如下所示 <h:inputText value="#{_input.response}" autocomplete="off" onmouseo

我正在使用
onkeyup=“this.value=this.value.toUpperCase();”
以大写形式更改输入文本值。这是工作,但我的需要是改变输入框中的单个字母,而不使用鼠标事件。如果使用左箭头键向后移动光标,则会触发onkeyup事件并将光标移动到终点。如何修改此脚本,以便可以使用箭头键向后导航并在两者之间的某个位置修改文本

当前代码如下所示

<h:inputText value="#{_input.response}" autocomplete="off" onmouseover="this.focus();" onkeyup="this.value=this.value.toUpperCase();"/>

CSS如何:

input.upper { text-transform: uppercase; }

备注:这仍然会将用户键入的值发送到服务器,而不是大写。

您可以检查onkeyup中按下的键,并且只对a-z键进行处理。这应该很容易,因为键码是数字的,您可以只检查键码是否在a(65)和z(90)的键码之间。

如Kristofer所说,最好使用样式,并转换服务器端。 还有一个jQuery插件可以强制使用大写:


input.upc{文本转换:大写;}
//谢谢2'm2pc':http://www.webdeveloper.com/forum/showpost.php?s=9f258cba84d461026bb9ed478e86776d&p=423545&postcount=3
函数doGetCaretPosition(oField){
var-iCaretPos=0;
if(document.selection)//IE支持
{
oField.focus();
var oSel=document.selection.createRange();
//将选择开始移动到0位置
oSel.moveStart('character',of ield.value.length);
//插入符号位置是选择长度
iCaretPos=oSel.text.length;
}
其他的
if(oField.selectionStart | | oField.selectionStart==“0”)//Firefox支持
iCaretPos=oField.selectionStart;
返回(iCaretPos);
}
功能剂量CaretPosition(oField,iCaretPos)
{
if(document.selection)//IE支持
{
oField.focus();
var oSel=document.selection.createRange();
oSel.moveStart('character',of ield.value.length);
oSel.moveStart('character',iCaretPos);
oSel.moveEnd('character',0);
oSel.select();
}
其他的
if(oField.selectionStart | | oField.selectionStart==“0”)//Firefox支持
{
oField.selectionStart=iCaretPos;
oField.selectionEnd=iCaretPos;
oField.focus();
}
}
上功能(o)
{
var x=doGetCaretPosition(o);
o、 value=o.value.toUpperCase();
doSetCaretPosition(o,x);
}
Fld 1:浏览器显示大写,表单提交混合大小写

FLD2:javascript将文本更新为大写,表单提交大写

样本可以是:

<p:inputText id="nombres" 
             value="#{userController.user.nombres}" 
             style="text-transform: uppercase" />

bootstrap 3具有转换类,可以使用文本大写类转换组件中的文本

<p class="text-lowercase">Lowercased text.</p>
<p class="text-uppercase">Uppercased text.</p>
<p class="text-capitalize">Capitalized text.</p>

小写文本

大写文本

大写文本


如果您在element blur事件中执行此操作,将更加容易。作为最终用户,我很高兴我不使用您的应用程序,否则如果它执行类似操作,我将不得不停止使用它!!我觉得打字时让人给我换衣服最让人恼火。如果您需要大写的值,请在我发送/提交等后执行-为什么在我键入时纠缠我?我不确定你所做的是否违反了软件开发的一些基本规则/法则,但如果没有,我想,应该有一个这样的规则/法则。我可能也会一直按capslock键,来打开那些恼人的大写字母:我不确定输入是否会保持大写。这仅仅是一个样式技巧,还是文本实际上转换为大写(比如,如果您将表单内容写入数据库)?将其设置为大写,然后在收到时在服务器端进行更改。无论如何,您都必须在服务器上使用大写。如果JS被关闭,并且您依赖大写字母,那么您必须在服务器上验证它,因为服务器端的大写字母值可以用于简单的jsf,附加到组件。欢迎使用。与其尝试为
进行漂亮的渲染,不如添加4个空格来突出显示代码,或者将它们放在``之间。
<p class="text-lowercase">Lowercased text.</p>
<p class="text-uppercase">Uppercased text.</p>
<p class="text-capitalize">Capitalized text.</p>