11

重複の可能性:
JavaScript で文字列の最初の文字を大文字にする

これはこれまでのコードです。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>
4

5 に答える 5

6

これを試して:

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);
于 2012-07-26T02:00:38.857 に答える
4

正規表現が怖い私たちのために(笑):

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(" ");
}
于 2012-07-26T01:57:38.703 に答える
3

このコードを試してください:

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');
于 2012-07-26T01:48:39.270 に答える
3

「コードに挿入する方法がわからない」

titleCase()関数(または現在呼び出している関数) をスクリプト ブロックにコピーし、関数内のステートメントtoTitleCase()の直前に次のコードを追加します。ifCheckForm()

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

そうすれば、フォームが送信された時点で、toTitleCase()関数を使用してフィールドが変更されます。(ステートメントの前にコードを追加するifと、検証に合格するかどうかに関係なくフィールドが変更さnotEmpty()れます。これは私には妥当だと思われます。)

(ちなみに、firstnameandlastname変数宣言は、CheckForm()これらの変数を使用しないため、関数から削除できます。)

于 2012-07-26T02:18:49.433 に答える
3

単一の文字列を大文字にするには、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();
    });
}

最新の編集で: 3 番目の 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 で名前を修正しようとしないでください。フォームがコミットされたときにこれを行います。ユーザーは、1 つの入力を空のままにしてエラー メッセージが表示された場合にのみ、このアクションの効果を確認できます。

とにかくサーバー側でこれを行う必要があります(ユーザー入力/ POSTデータを信頼しないでください。JavaScriptが無効になっている可能性があります)。したがって、JavaScriptに慣れていない(または気に入らないなど)場合は、この「機能」を省略してください。

于 2012-07-26T02:28:34.643 に答える