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

时间:2017-06-01 23:09:22

标签: javascript for-loop input char uppercase

我无法看到我在哪里出错了。我的代码是......

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()函数通过删除输入框的值来正常工作,如果它的值是&#34;(必需)&#34;,但是我无法获得firstC()函数来大写任何输入的第一个字符。

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

2 个答案:

答案 0 :(得分:2)

您应该将this传递给内联JS偶像:

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

实施例

&#13;
&#13;
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);
}
&#13;
<input type="text" onclick="empty(this)" onblur="firstC(this)"  value="(required)" id="firstName" class="uValue" name="firstname">
&#13;
&#13;
&#13;

P.S:不要忘记,不要使用empty()value="(required)",而只需使用placeholder属性

placeholder="(required)"

答案 1 :(得分: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);
        }
    }