2011-11-08 87 views
1

我想将JavaScript函数从输入标记移动到<script>标记,但它不起作用。JavaScript难题

这工作:

<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()"> 

有什么区别?

+1

我真的想为+1使用“难题”。 –

+0

@Downvoter:请给出一个原因,以便OP可以改善问题。简单的投票并没有帮助。 http://meta.stackexchange.com/questions/135/encouraging-people-to-explain-down-votes – zengr

+0

我想如果你看看JavaScript日志,你会看到错误。 –

回答

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/