JavaScript难题

Mik*_*ike 1 javascript

我想将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';"
/>
Run Code Online (Sandbox Code Playgroud)

这不是:

<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>
Run Code Online (Sandbox Code Playgroud)
<input type="text" name="aaa" id="aaa" onkeyup="FieldOnKeyUp()">
Run Code Online (Sandbox Code Playgroud)

有什么不同?

jfr*_*d00 6

this不会传递给您的单独函数.实际上,this在你的函数中设置了window对象.您需要更改为此类型的代码才能将正确的值传递给您的函数:

<input type="text" name="aaa" id="aaa" onkeyup="FieldOnKeyUp(this)">
Run Code Online (Sandbox Code Playgroud)

和你的代码:

<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>
Run Code Online (Sandbox Code Playgroud)

这是一个显示此代码的示例:http://jsfiddle.net/jfriend00/2dJ6x/.