12

可能重复:
JavaScript中字符串的第一个字母大写

这是目前为止可能的代码。我希望FIRST_Name和LAST_Name字段将第一个字母大写,其他所有字母都小写:

另外,我不熟悉javaScript,所以我不太确定自己在做什么。

最新编辑。这个代码有什么问题?

<HTML><头部><TITLE></TITLE><script language=“javascript”type=“text/javascript“><!--函数CheckForm()formObj.FIRST_Name.value=titleCase(formObj.FIRST_Name.value);formObj.LAST_Name.value=titleCase(formObj.LAST_Name.value);函数titleCase(str){var单词=str.split(/\s+/);for(var i=0;i<words.length;i++)words[i]=单词[i].charAt(0).toUpperCase()+单词[i].slice(1);return words.join(“”);}{var formObj=文档.getElementById(“数据”);var firstname=formObj.FIRST_Name.value;var lastname=formObj.LAST_Name.value;if(notEmpty(formObj.FIRST_Name,“请输入您的名字”){if(notEmpty(formObj.LAST_Name,“请输入您的姓氏”){if(titleCase(formObj.FIRST_Name)返回true;}}返回false;}函数notEmpty(elem,helperMsg){if(元素值长度==0){警报(helperMsg);元素焦点();//将焦点设置为此输入返回false;}返回true;}</script></头部><车身><div style=“background:#CCCC99”><HR><FORM id=“Data”onsubmit=“return CheckForm()”action=“post to server”method=post><P> 名字:<input type=text Name=First_Name maxlength=15 size=15>姓氏:<input type=text Name=Last_Name maxlength=15 size=15><input type=submit value=“submit Products Registration Form”style=“width:220px”><input type=reset value=“reset”></form></div></车身></HTML>
5
  • 使用此正则表达式更简单:/\b\w/g型然后将匹配项(单个字符)替换为大写版本。\b条表示“单词边界”。(它甚至可以跨连字符工作,可能需要也可能不需要:-)
    – 用户166390
    2012年7月26日1:45
  • 1
    @pst-开始时允许空白是一个好主意\b条应该这样做,但原始代码还将其余文本更改为小写。
    – nnnnnn
    2012年7月26日2:16
  • 你到底想做什么?检查输入的格式是否正确(和警告)?提交时更正它(那么服务器端也可以)?在打字时更正live(非常烦人)?
    – 贝吉
    2012年7月26日2:22
  • 这个标题案例()编辑问题时添加的功能将不起作用(它有一个错误:未定义-应为).
    – nnnnnn
    2012年7月26日2:24
  • 只是在编辑中修复了这个问题。对不起的。。。
    – 堤坝
    2012年7月26日2:27

5个答案5

重置为默认值
5

试试这个:

String.prototype.toCap=函数(){ return this.toLowerCase().replace(/^.|\s\s/g,函数(str){return str.to UpperCase();});}        var firstname=“gob”.toCap();var lastname=“bluth”.toCap();警报(名字+“”+姓氏);
1
  • 1
    使用\b可以更轻松-查看我的答案
    – 贝吉
    2012年7月26日2:31
4

对于我们这些害怕正则表达式的人(哈哈):

函数titleCase(str){var words=str.split(“”);for(var i=0;i<words.length;i++){var j=words[i].charAt(0).toUpperCase();单词[i]=j+words[i].substr(1);}return words.join(“”);}
2
  • 1
    @戴克:看起来不错,只有要加入的数组仍被命名...
    – 贝吉
    2012年7月26日2:17
  • @Count在大写字符串后,您要对它做什么?
    – 堤坝
    2012年7月26日2:24

“不知道如何将其放入我的代码中”

复制标题案例()(或到标题案例()函数,然后在脚本块之前添加以下代码如果在您的检查表单()功能:

formObj.FIRST_Name.value=titleCase(formObj.FIRST_Name.value);formObj.LAST_Name.value=titleCase(formObj.LAST_Name.value);

这样,在提交表单时,字段将使用到标题案例()功能。(如果在如果语句,无论是否非空()验证通过了,我觉得这很合理。)

(顺便说一句名字姓氏变量声明可以从检查表单()函数,因为您从未使用过这些变量。)

1
  • 正如我上面所评论的标题案例()您在问题中编辑的函数有一个错误(该错误已在dykeag的答案中修复)。正如我在回答中所说,值的更改只会在提交时发生,但对我来说,这似乎没问题,而且您没有另外指定。
    – nnnnnn
    2012年7月26日2:33

尝试以下代码:

函数toTitleCase(str){var words=str.match(/\w*/g);for(var i=0;i<words.length;i++)words[i]=单词[i][0].toUpperCase()+单词[i]切片(1);return words.join('');}toTitleCase(“我的名字”);
5
  • 我认为问题是如何整合said到TitleCase功能。。例如模糊或提交前或?
    – 用户166390
    2012年7月26日1:50
  • 匹配空白?我相信你的意思是分裂
    – 贝吉
    2012年7月26日2:19
  • @Bergi空白?不,我正在匹配(字母和数字) 2012年7月26日2:41
  • 呃,我累了:-|好的,你真的想使用match-但如果真的要使用,你需要捕捉null匹配,例如空字符串或unicode字符。
    – 贝吉
    2012年7月26日2:47
  • 嗯,你说得对。在这种情况下,我们必须使用/\w*/g(重量)而不是/\w+/g。谢谢:) 2012年7月26日3:03

要大写单个字符串,请参见如何在JavaScript中使字符串的第一个字母大写?

如果要对字符串中的每个单词执行此操作,则需要将字符串拆分为多个单词,应用uc第一将它们连接在一起:

函数titleCase(str){var单词=str.split(/\s+/);for(var i=0;i<words.length;i++)words[i]=单词[i].charAt(0).toUpperCase()+单词[i].slice(1);return words.join(“”);}

或者,您可以对它们应用正则表达式,以匹配每个首字母并替换它们:

函数titleCase(str){return str.replace(/\b\S/g,函数(c){将c.返回到UpperCase();});}

在您最近的编辑中:第三个if-condition中出现语法错误,它缺少右括号。此外,您还插入了titleCase(标题大小写)函数体之前的代码。

/*上面的titleCase函数*/函数CheckForm(){var formObj=文档.getElementById(“数据”);var firstname=表单对象.FIRST_Name;var lastname=表单对象.LAST_Name;firstname.value=titleCase(firstname.value);lastname.value=titleCase(lastname.value);return notEmpty(名字,“请输入您的名字”)&&notEmpty(姓氏,“请输入您的姓氏”);}函数notEmpty(elem,helperMsg){if(元素值长度==0){警报(helperMsg);元素焦点();//将焦点设置为此输入返回false;}返回true;}

我个人对此的看法是:根本不要试图用JavaScript来更正名称。您可以在提交表单时执行此操作,只有当用户将一个输入留空并遇到错误消息时,才会看到此操作的效果。

无论如何,您都需要在服务器端执行此操作(永远不要相信用户输入/POST数据,javascript可能会被禁用),因此如果您不熟悉javascript(或不喜欢它或其他),只需忽略此“功能”即可。

不是你想要的答案吗?浏览已标记的其他问题问你自己的问题