2011-06-26 10 views
2

異なるラジオボタンがフォーカスされている場合、テキストボックスid = "1"のテキストを変更したいと思います。私はそれが "this.value"で動作すると思ったが、何とかそれはdosn't。誰かがこれをどのように解決するか考えていますか?JavaScriptを使用してテキストボックス内のテキストを「this」に変更しますか?

よろしくお願いいたします。あなたは

var a = function(obj){ 

     if(obj.value == "p"){ 

      document.getElementById("1").value = "Question product"; 

     } 
     else if(obj.value== "v"){ 

      document.getElementById("1").value = "Question contract"; 

     } 

     else if(obj.value== "t"){ 

      document.getElementById("1").value = "Question technology"; 

     } 

代わり

+2

関数のパラメータとして 'this'を渡します。それ以外の場合は、グローバルオブジェクトを取得しています。 –

+0

ねえ、そこにjqueryを使用する方法は分かりますが、問題はありません。しかし、私はJavaScript経由でこれを行う必要があります:S – rafi

答えて

1

フォーカスを使用しますが、onclickの、配列を使用してくださいしないでくださいを行い、その後、最初の引数としてこれを渡す必要があり

<head> 
    <title>Test</title> 
    <script type="text/javascript"> 
     var a = function(){ 

      if(this.value == "p"){ 

       document.getElementById("1").value = "Question product"; 

      } 
      else if(this.value== "v"){ 

       document.getElementById("1").value = "Question contract"; 

      } 

      else if(this.value== "t"){ 

       document.getElementById("1").value = "Question technology"; 

      } 

     } 
    </script> 

    </head> 

    <body> 
    <input type="radio" name="typ" value="p" onfocus="a()"/> product 
    <input type="radio" name="typ" value="v" onfocus="a()"/> contract 
    <input type="radio" name="typ" value="t" onfocus="a()"/> technology 
    <br /> 
    <input type="text" value="Question" size="46" id="1"/> 
    </body> 

</html> 
+0

+1それは行く方法です... IEはafEkを介して 'getElementsByName'といくつかの問題があります。 –

+0

それは何でしょうか?例がありますか?それが問題であれば、フォームにラジオをラップして 'var typ = document.forms [0] .typ;' – mplungjan

+0

を実行してください。 IEは** id **にこの値がある要素も考慮しているようです(http://www.quirksmode.org/dom/w3c_core.html#t125)。 –

1
input type="radio" name="typ" value="p" onfocus="a(this)"/> product 

フィールドには文字またはアンダースコアで始まるIDを付けます

<head> 
    <title>Test</title> 
    <script type="text/javascript"> 
     var questionDescription={ 
     p:"Question product", 
     v:"Question contract", 
     t:"Question technology" 
     } 
     window.onload=function(){ 
     var typ=document.getElementsByName("typ"); 
     for (var i=0,n=typ.length;i<n;i++) { 
      typ[i].onclick=function() { 
      document.getElementById("q1").value=questionDescription[this.value] 
      } 
     } 
    } 
    </script> 

    </head> 

    <body> 
    <input type="radio" name="typ" value="p" /> product 
    <input type="radio" name="typ" value="v" /> contract 
    <input type="radio" name="typ" value="t" /> technology 
    <br /> 
    <input type="text" value="Question" size="46" id="q1"/> 
    </body> 

</html> 
関連する問題