我想将JavaScript函数从输入标记移动到<script>
标记,但它无效。
这有效:
<input type="text" name="aaa" id="aaa" onkeyup="javascript:this.value=
this.value.substring(0,1).toUpperCase()+
this.value.substring(1,this.value.length);
if (this.value=='')
document.getElementById('aaaLabel').innerHTML='AAA';"
/>
这不是:
<script type="text/javascript">
function FieldOnKeyUp() {
this.value=this.value.substring(0,1).toUpperCase()+
this.value.substring(1,this.value.length);
if (this.value=='')
document.getElementById('aaaLabel').innerHTML='AAA';
}
</script>
<input type="text" name="aaa" id="aaa" onkeyup="FieldOnKeyUp()">
有什么区别?
答案 0 :(得分:6)
this
的值不会传递给您的单独函数。实际上,函数中的this
设置为window
对象。您需要更改为此类型的代码才能将正确的值传递给您的函数:
<input type="text" name="aaa" id="aaa" onkeyup="FieldOnKeyUp(this)">
以及您的代码:
<script type="text/javascript">
function FieldOnKeyUp(el) {
el.value=el.value.substring(0,1).toUpperCase()+el.value.substring(1);
if (el.value=='') {
document.getElementById('aaaLabel').innerHTML='AAA';
}
}
</script>
以下是展示此代码的示例:http://jsfiddle.net/jfriend00/2dJ6x/。