2011-11-08 5 views
1

JavaScript機能を入力タグから<script>タグまで移動したいが、機能しない。JavaScript Conundrum

これは動作します:

<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の値は、別の機能に渡されません。実際には、関数内のthiswindowオブジェクトに設定されています。あなたの関数に正しい値を渡すために、コードのこのタイプに変更する必要があります。

<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/

関連する問題