到目前为止这可能是代码。我希望FIRST_Name和LAST_Name字段大写第一个字母并使所有其他字母变小:
另外,我不熟悉javaScript,所以我不确定我在做什么。
最新编辑。这段代码有什么问题?
<HTML>
<HEAD>
<TITLE></TITLE>
<script language="javascript" type="text/javascript">
<!--
function CheckForm()
formObj.FIRST_Name.value = titleCase(formObj.FIRST_Name.value);
formObj.LAST_Name.value = titleCase(formObj.LAST_Name.value);
function titleCase(str) {
var words = str.split(/\s+/);
for (var i=0; i<words.length; i++)
words[i] = words[i].charAt(0).toUpperCase() + words[i].slice(1);
return words.join(" ");
}
{
var formObj = document.getElementById("Data");
var firstname = formObj.FIRST_Name.value;
var lastname = formObj.LAST_Name.value;
if(notEmpty(formObj.FIRST_Name, "Please enter your first name")){
if(notEmpty(formObj.LAST_Name,"Please enter your last name")){
if(titleCase(formObj.FIRST_Name)
return true;}}
return false;
}
function notEmpty(elem, helperMsg){
if(elem.value.length == 0){
alert(helperMsg);
elem.focus(); // set the focus to this input
return false;
}
return true;
}
</script>
</HEAD>
<BODY>
<div style="background: #CCCC99">
<HR><FORM id="Data" onsubmit="return CheckForm()" action="post to server" method=post>
<P>First Name: <input type=text name=FIRST_Name maxlength=15 size=15>
Last Name: <input type=text name=LAST_Name maxlength=15 size=15></P>
<input type=submit value="Submit Products Registration Form" style="width: 220px"><input type=reset value="Reset">
</form>
</div>
</BODY>
</HTML>
答案 0 :(得分:4)
试试这个:
String.prototype.toCap = function()
{
return this.toLowerCase().replace(/^.|\s\S/g, function(str) {
return str.toUpperCase();
});
}
var firstname = "gob".toCap();
var lastname = "bluth".toCap();
alert(firstname + ' ' + lastname);
答案 1 :(得分:3)
对于我们这些害怕正则表达式的人(笑):
function titleCase(str)
{
var words = str.split(" ");
for ( var i = 0; i < words.length; i++ )
{
var j = words[i].charAt(0).toUpperCase();
words[i] = j + words[i].substr(1);
}
return words.join(" ");
}
答案 2 :(得分:2)
试试这段代码:
function toTitleCase(str){
var words = str.match(/\w*/g);
for(var i=0;i<words.length;i++)
words[i] = words[i][0].toUpperCase() + words[i].slice(1);
return words.join(' ');
}
toTitleCase('my name');
答案 3 :(得分:2)
“不知道如何将其放入我的代码”
将titleCase()
(或toTitleCase()
或您现在正在调用的任何内容)功能复制到脚本块中,然后在{if
语句的CheckForm()
语句之前添加以下代码1}}功能:
formObj.FIRST_Name.value = titleCase(formObj.FIRST_Name.value);
formObj.LAST_Name.value = titleCase(formObj.LAST_Name.value);
这样,在提交表单时,将使用您的toTitleCase()
函数更改字段。 (如果在if
语句之前添加代码,无论notEmpty()
验证是否通过,都会更改字段,这对我来说似乎是合理的。)
(顺便提一下,firstname
和lastname
变量声明可以从CheckForm()
函数中删除,因为您不会使用这些变量。)
答案 4 :(得分:2)
要将单个字符串大写,请参阅How do I make the first letter of a string uppercase in JavaScript?。
如果您想对字符串中的每个单词进行此操作,您需要将字符串拆分为单词,在每个单词上应用ucFirst
函数并将它们连接在一起:
function titleCase(str) {
var words = str.split(/\s+/);
for (var i=0; i<words.length; i++)
words[i] = words[i].charAt(0).toUpperCase() + words[i].slice(1);
return words.join(" ");
}
或者您可以对它们应用正则表达式,以匹配每个首字母并替换它们:
function titleCase(str) {
return str.replace(/\b\S/g, function(c){
return c.toUpperCase();
});
}
在您的最新编辑中:您在第三个if条件中遇到语法错误,它没有结束括号。此外,您已在函数体之前插入titleCase
代码。
/* the titleCase function from above here */
function CheckForm() {
var formObj = document.getElementById("Data");
var firstname = formObj.FIRST_Name;
var lastname = formObj.LAST_Name;
firstname.value = titleCase(firstname.value);
lastname.value = titleCase(lastname.value);
return notEmpty(firstname, "Please enter your first name")
&& notEmpty(lastname, "Please enter your last name");
}
function notEmpty(elem, helperMsg){
if(elem.value.length == 0){
alert(helperMsg);
elem.focus(); // set the focus to this input
return false;
}
return true;
}
我个人对此的看法:不要试图用JavaScript更正名称。您在提交表单时执行此操作,只有当用户将一个输入留空并遇到错误消息时,用户才会看到此操作的效果。
无论如何,你需要在服务器端执行此操作(永远不要信任用户输入/ POST数据,可以禁用javascript),所以如果你不熟悉JavaScript(或者不喜欢它或者其他什么),那么就省略这个“功能” ”