将文本输入的第一个字符大写

Posted

技术标签:

【中文标题】将文本输入的第一个字符大写【英文标题】:Capitalise the first character of text input 【发布时间】:2017-11-03 05:53:11 【问题描述】:

我看不出我哪里出了问题。我的代码是...

function firstC()
    
        var x = document.getElementsByClassName("uValue");

        for(var i = 0; i < x.length; i++) 
            x.value.charAt(0).toUpperCase();
        
    

它被...调用

<td><input type="text" name="firstname" value="(required)" id="firstName" class="uValue" onclick="empty(this.id)" onblur="firstC()" /></td>

empty() 函数通过删除输入框的值(如果其值为“(必需)”)正常工作,但我无法让firstC() 函数将任何输入的第一个字符大写。

编辑:我正在使用getElementsByClassName,因为我试图允许多个输入框使用相同的功能。

【问题讨论】:

【参考方案1】:

您应该将 this 传递给您的内联 JS 事件:

onclick="empty(this)" onblur="firstC(this)"

例子

function empty(el)   // el now refers to the this referrer
  el.value="";


function firstC(el) 
  var val = el.value;
  el.value = val.charAt(0).toUpperCase() + val.substr(1);
&lt;input type="text" onclick="empty(this)" onblur="firstC(this)"  value="(required)" id="firstName" class="uValue" name="firstname"&gt;

P.S:不要忘记,除了使用 empty()value="(required)",您可以简单地使用 placeholder 属性

placeholder="(required)"

【讨论】:

感谢您的回答。很高兴看到做事的替代方法,我也测试了这个方法,所以我知道它有效:)。也感谢您对占位符的提醒!【参考方案2】:

您忘记将值分配回去

function firstC()
    
        var x = document.getElementsByClassName("uValue");

        for(var i = 0; i < x.length; i++) 
            x[i].value = x[i].value.charAt(0).toUpperCase() + x[i].value.substr(1);
        
    

【讨论】:

对不起,您也错过了索引 :-)(已修复) 啊该死的!我需要更频繁地来这里,早在我花几个小时绞尽脑汁之前。这有效 - 非常感谢! :D

以上是关于将文本输入的第一个字符大写的主要内容,如果未能解决你的问题,请参考以下文章

Pandas处理dataframe的文本数据列:使用str属性获取数据列的字符串方法类capitalize函数将指定字符串数据列内容的第一个词的首字母大写(第一个词的首字母大写)

如何将字符串的第一个字母大写

如何验证文本框只允许 c#.net 中的第一个字符大写字母?

如何在javaScript中将每个文本输入的第一个字母大写? [复制]

Java如何将每个单词的第一个字符转为大写

如何在javascript中将字符串的每个单词的第一个字符大写? [复制]