2011-06-26 29 views
2

当不同的单选按钮聚焦时,我想更改文本框中的文本id =“1”。我认为它会与“this.value”一起工作,但不知何故它不会。有人有任何想法如何解决这个问题?用JavaScript“this”更改文本框中的文本?

问候!

<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> 
+2

将'this'作为函数的参数。否则,你正在抓取全局对象。 – 2011-06-26 17:21:06

+0

嘿,我知道如何使用jquery那里没有问题。但我必须通过JavaScript来做到这一点:S – rafi

回答

1

不要使用焦点,但的onclick并请使用数组并给该字段一个以字母或下划线开头的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> 
+0

+1这就是要走的路...... IE浏览器通过'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 

您需要在第一个通过这个作为一个参数,然后做

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"; 

     } 

代替