2017-04-05 118 views
0

我在這裏遇到問題。我剛開始學習Yii2,我需要大寫first letters我的參賽表格(它的名字和姓氏)。我用JS做這件事,但不知何故,我的代碼不起作用,並沒有打印任何結果。有人能幫我解決這個問題,並告訴我我做錯了什麼嗎?在JavaScript中首字母大寫

這裏是我的代碼:

function entryForm(name, surname) { 
this.name = $(name); 
this.surname = $(surname); 
var self = this; 

/* 
* Capitalizes first letter of users entered name and surname 
* 
* @param string input 
*/ 
this.capitalizeName = function(input) { 
var name = input.val(); 
name = name.toLowerCase().replace(/(^|\s)[a-z]/g, function(letter) { 
    return letter.toUpperCase(); 
}) 
input.val(name); 
} 
var entryForm = new entryForm('#employee-name', '#employee-surname'); 

$(document).ready(function() { 
/* 
* Executes named function 
*/ 
    $('#employee-name, #employee-surname').change(function() { 
     entryForm.capitalizeName($(this)); 
    }) 
}) 
} 
+0

您可以使用解決方案從http://stackoverflow.com/questions/1026069/how-do-i-make-the-first-letter-of-a-string-uppercase-in-javascript – Bizley

+0

待辦事項你需要顯示'大寫'的文本,或者它不是必需的(這足以將它存儲在數據庫中)? – gmc

+0

@gmc我需要以大寫字母自動顯示enterted名稱。是的,我可以通過添加規則來做到這一點,但不是自動替換它,而是在點擊「創建」按鈕後替換字母 – user7435747

回答

2

我已經做了幾個調整,我想我會使其工作:

首先,命名您的JS「類」開頭的大寫。這個變量聲明var entryForm = new entryForm(爲同名的'class'聲明蒙上陰影。

其次,我會把$(document).ready函數放在類之外。

function EntryForm(name, surname) { 
    this.name = $(name); 
    this.surname = $(surname); 
    var self = this; 

    /* 
    * Capitalizes first letter of users entered name and surname 
    * 
    * @param string input 
    */ 
    this.capitalizeName = function(input) { 
     var name = input.val(); 
     name = name.toLowerCase().replace(/(^|\s)[a-z]/g, function(letter) { 
      return letter.toUpperCase(); 
     }) 
     input.val(name); 
    } 
} 

$(document).ready(function() { 
/* 
* Executes named function 
*/ 
    $('#employee-name, #employee-surname').change(function() { 
     var entryForm = new EntryForm('#employee-name', '#employee-surname'); 
     entryForm.capitalizeName($(this)); 
    }) 

})