再说一遍:我在这里学习! 对不起这些基本问题,但我得学习......
使用我在线阅读的技巧我试图将它从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);" />
答案 0 :(得分:3)
您错过了检索value
属性,您需要将charAt
和substr
应用于字符串而不是直接应用于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="" />