JavaScript toUpperCase只是第一个字母

时间:2016-06-17 17:56:08

标签: javascript html css css3

再说一遍:我在这里学习! 对不起这些基本问题,但我得学习......

使用我在线阅读的技巧我试图将它从cap all改为首字母。请参阅此处的代码 - 具体来说,我们正在查看JavaScript onkeyup

这有效:

<label for="class">Classification</label>
<input type="text" name="class" id="class" value="" required="true" placeholder="" style="text-transform:uppercase" onkeyup="javascript:this.value=this.value.toUpperCase();" />

这不起作用:

<label for="judge">Judge's Name</label>
<input type="text" name="judge" id="judge" value="" required="true" placeholder="" list="judges" style="text-transform:capitalize" onkeyup="javascript:this.value=this.charAt(0).toUpperCase() + this.substr(1);" />

1 个答案:

答案 0 :(得分:3)

您错过了检索value属性,您需要将charAtsubstr应用于字符串而不是直接应用于dom元素。

<label for="judge">Judge's Name</label>
<input type="text" name="judge" id="judge" value="" required="true" placeholder="" list="judges" style="text-transform:capitalize" onkeyup="javascript:this.value=this.value.charAt(0).toUpperCase() + this.value.substr(1);" />

FYI:始终最好使用css,因为可以选择首字母大写(使用text-transform:capitalize)。而不是内联脚本代码使用函数,使其更易读和易于处理。

更新: 另一个建议是使用Html5 input事件而不是keyup这可能会更好。

<label for="judge">Judge's Name</label>
<input type="text" name="judge" id="judge" value="" required="true" placeholder="" list="judges" style="text-transform:capitalize" oninput="javascript:this.value=this.value.charAt(0).toUpperCase() + this.value.substr(1);" />

此外,您可以通过添加名为judge的其他隐藏输入字段来避免移动箭头键(作为 @stdob 注释)的问题,并将值更新到该字段并将其传输到服务器。

function transform(ele) {
  var hid = document.getElementById('judge');
  hid.value =
    ele.value.charAt(0).toUpperCase() + ele.value.substr(1);
}
<label for="judge">Judge's Name</label>
<input type="text" value="" required="true" placeholder="" list="judges" style="text-transform:capitalize" onkeyup="transform(this)" />
<input type="hidden" name="judge" id="judge" value="" />