2017-04-05 119 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)); 
    }) 

})