Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.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
Jquery 如何强制文本框中字母的大小写_Jquery_Css_Asp.net Mvc - Fatal编程技术网

Jquery 如何强制文本框中字母的大小写

Jquery 如何强制文本框中字母的大小写,jquery,css,asp.net-mvc,Jquery,Css,Asp.net Mvc,在我的MVC应用程序中,我有一些名称字段,我想确保第一个字母是大写,其余的是小写。 没问题,你可以用这个; Html.TextBoxFor(model=>model.Employee.nam姓氏,新的{style=“text-transform:capitalize;”} 这有两个问题; 1/当您保存数据时,您必须再次转换文本。CSS不会转换基础数据,只转换您在屏幕上看到的数据。 2/我的老板决定第一次试用我的屏幕,她习惯于用大写字母作为这种形式。因此,她希望进行文本转换,以强制从第二个字母开始

在我的MVC应用程序中,我有一些名称字段,我想确保第一个字母是大写,其余的是小写。 没问题,你可以用这个; Html.TextBoxFor(model=>model.Employee.nam姓氏,新的{style=“text-transform:capitalize;”}

这有两个问题; 1/当您保存数据时,您必须再次转换文本。CSS不会转换基础数据,只转换您在屏幕上看到的数据。 2/我的老板决定第一次试用我的屏幕,她习惯于用大写字母作为这种形式。因此,她希望进行文本转换,以强制从第二个字母开始使用小写字母。因此,如果她键入SMITH,她希望看到SMITH。 我想知道如何做到这一点。如果每次击键都需要客户端事件来进行转换。

试试下面的javascript:

Html.TextBoxFor(model=>model.Employee.nam姓氏,new{@onkeypress=“caseL(this,event);”}

Html.TextBoxFor(model=>model.Employee.nam姓氏,new{@onkeypress=“caseS(this);”}

功能用例(obj、evt){
/*
懒散的文字资本家。
e、 g onKeypress=“caseL(这个,事件);”
*/
瓦里伦;
var键;
iLen=obj.value.length;
如果(navigator.appName=='Netscape'){
key=evt.charCode;
如果((键==0)和&(evt.which==13)){
//输入键以便抑制
evt.preventDefault();
}
}否则{
key=window.event.keyCode;
如果(键==13){
//输入键以便抑制
window.event.cancelBubble=true;
window.event.returnValue=false;
}
}
如果((iLen==0)| |(对象值字符(iLen-1)==”)|(对象值字符(iLen-1)==“-”){
如果((键>0x60)和&(键<0x7B)){
如果(navigator.appName=='Netscape'){
key=key-0x20;
var newEvent=document.createEvent(“KeyEvents”)
newEvent.initKeyEvent(“keypress”,true,true,document.defaultView,evt.ctrlKey,evt.altKey,evt.shiftKey,evt.metaKey,0,String.fromCharCode(key).charCodeAt(0))
evt.preventDefault()
evt.target.dispatchEvent(newEvent)
}否则{
window.event.keyCode=键-0x20;
}
}
}
}
功能案例(obj){
/* 
严格的文字资本家。
e、 g onKeypress=“案例(此);”
*/
瓦里伦;
iLen=obj.value.length;
key=window.event.keyCode;
如果((iLen>0)&&(对象值字符(iLen-1)!=”)&&(对象值字符(iLen-1)!=“-”){
如果((键>0x40)和&(键<0x5B))
window.event.keyCode=key+0x20;
返回true;
}
如果((iLen==0)| |(对象值字符(iLen-1)==”)| |(对象值字符(iLen-1)==“-”){
如果((键>0x60)和&(键<0x7B))
window.event.keyCode=key-0x20;
}
}

类似的方法应该可以:

$(function() {

    $(".field").blur(function() {
       $(this).val( $(this).val().substr(0,1).toUpperCase() + $(this).val().substr(1).toLowerCase());
    });

});

JSFIDLE:

谢谢。我尝试了你的初始版本,发现javascript方法一开始就没有被按键调用。我正在使用MVC2和IE8.-1作为
navigator.appName=='Netscape'
。如果你要推荐某个东西,我会推荐+1。这是一个改进的版本。它不完美但它肯定会作为一种解决方案出现在网上。唯一的问题是,在我将tab键转到下一行之前,它不会转换大小写。我个人不喜欢表单字段在我键入时更改我的值,最重要的是,当值长于输入的可见区域时,Firefox似乎会表现出奇怪的行为,向我显示val的开始与卡罗牌的实际位置相反。听起来很合理,但我的老板不理解这种说法!
$(function() {

    $(".field").blur(function() {
       $(this).val( $(this).val().substr(0,1).toUpperCase() + $(this).val().substr(1).toLowerCase());
    });

});