2013-03-08 109 views
0

我在Javascript中使用以下方法。Javascript更改单选按钮的文本

Function JsChangeRBText(itemCheckBox, rbClientId) 
{ 
    var optVal = document.getElementById(rbClientId); 
    if(itemCheckjBox.checked) 
    { 
     optVal.innerText = 'abc'; 
    }  
    else 
    { 
     optVal.innerText = 'xyz'; 
    }  
} 

这里rbclientId是单选按钮的客户端ID。我想在复选框上选中或未选中状态下更改文本。但是使用上面的代码我无法做到。我错过了一些东西。我也尝试了innerHTML。当我使用alert使用innerText和innerHTML获取当前文本时,两者都是空白的。但是在alert中,我可以看到rbClientId的id和值。

回答

2
function JsChangeRBText(itemCheckBox, rbClientId) 
{ 
    var optVal = document.getElementById(rbClientId); 
    var label = optVal.nextSibling; 
    if(itemCheckjBox.checked) 
    { 
    label.value = "adc";; 
    }  
    else 
    { 
    label.value = "ccc"; 
    }  
} 
+0

,但是当前的label.value是未定义的。 – Pramod 2013-03-08 07:00:50

+0

你可以尝试更新的答案.. – Anujith 2013-03-08 07:09:36

+0

控制不会进入If条件。我认为方法next()中存在一些问题。 – Pramod 2013-03-08 07:13:29

1

HTML:

<input type="radio" /><label>Option 1</label> 

<input type="radio" /><span>Option 1</span> 

JS:

var $label = $('input[type=radio]').next(); 
$label.text('Options'); 
+0

thanx for reply。但我正在使用JavaScript ...请在jscript中提出解决方案。 – Pramod 2013-03-08 06:44:51

+0

您是否使用jQuery? – Amrendra 2013-03-08 06:47:08

+0

不,我正在使用Javascript。 – Pramod 2013-03-08 06:51:02

1

首先声明单选按钮这样

<input type="radio" id="rb" runat="server"/> 
<label for="<%=rb.ClientID%>">option 1</label> 

我的意思是使用HTML单选按钮,runat="server"而非asp:RadioButton,这将确保控制的渲染,因为它是再试试这个

function JsChangeRBText(itemCheckBox, rbClientId) 
{ 
    var optVal = document.getElementById(rbClientId); 
    if(itemCheckjBox.checked) 
    { 
     optVal.nextSibling.value = 'abc'; 
    }  
    else 
    { 
     optVal.nextSibling.value = 'xyz'; 
    }  
} 
+0

@ Pawan Nogariya但这是一个hTML控件..可以使用asp控件更改单选按钮的文本。 – Pramod 2013-03-08 06:53:01

+0

因为它是runat =“server”控件,您将能够在后面的代码中访问它。 – 2013-03-08 06:53:39

+0

我正在使用它作为asp控件。这段代码有没有问题? – Pramod 2013-03-08 06:56:23

0

没有测试,但我想这应该工作。如果它不工作,请回复。

<asp:CheckBox 
     ID="CheckBox1" 
     runat="server" 
     Text="Set Radio Checked" 
     OnCheckedChanged="setText(this, document.getElementById('RadioButton1'))" 
     AutoPostBack="true" 
/> 
<asp:RadioButton 
     ID="RadioButton1" 
     runat="server" 
     Text="Red" 
     GroupName="group1" 
/> 

<script runat="server"> 
    protected void setText(checkBox, radioBtn) 
    { 
     if (checkBox.Checked == true) { 
      radioBtn.Text = "abc"; 
     } 
     else{ 
      radioBtn.Text = "xyz"; 
     } 
    } 
</script> 
1

我知道这个问题已经解决,但发布此解决方案,以防其他情况下有用。

但在这里我已经使用jQuery的

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
<script> 
    Function JsChangeRBText(itemCheckBox, rbClientId) 
    { 
     var optVal = document.getElementById(rbClientId); 
     if(itemCheckjBox.checked) 
     { 
      $("label[for='" + rbClientId + "']").text('abc'); 
     }  
     else 
     { 
      $("label[for='" + rbClientId + "']").text('xyz'); 
     }  
    } 
</script> 
0
function JsChangeRBText(itemCheckBox, rbClientId) 
{ 
    var optVal = document.getElementById(rbClientId); 
    var label = optVal.nextSibling; 
    if(itemCheckjBox.checked) 
    { 
    label.textContent = "adc"; 
    }  
    else 
    { 
    label.textContent = "ccc"; 
    }  
} 

使用的textContent。这为我工作。