基于radiobutton响应启用多个textareas

时间:2014-02-14 19:33:06

标签: javascript radio-button textarea

以下是我要解决的问题: 我有很多问题。

每个问题都包括一个响应部分,其中包括4个radiobutton(是,否,未见和不适用)和两个textareas;

现在,默认情况下禁用textarea“观察”。只有用户的回答“否”才能启用此文本区域。

问题:如何在整个问题集中对每个文本区域“观察”应用相同的逻辑。

目前我所拥有的是: A.响应按钮的HTML

<div id="Response">
  <label><input type="radio" name="Radio419" value="Y" id="Radio_419Y" onchange='radioChange(this)'>Yes</label>
  <label><input type="radio" name="Radio419" value="N" id="Radio_419N" onChange='radioChange(this)'>No</label>
  <label><input type="radio" name="Radio419" value="NS" id="Radio_419NS" onChange='radioChange(this)'>Not Seen</label>
  <label><input type="radio" name="Radio419" value="NA" id="Radio_419NA" onChange='radioChange(this)'>Not Applicable</label>
</div>

B中。文本框的HTML

 <span id="responseDetails">
 <div id="Comment">
   <label for="comment">Comment:</label>
   <textarea name="comment" id="Comm419"</textarea></div>
 <div id="Observation">
   <label for="observation">Observation:</label>
   <textarea name="observation" id="Obs419"</textarea></div>
 </span>

℃。 JS只处理这个问题

<script type="text/javascript">
document.radioChange = function (button)
  {if(button.checked ) {if (button.value === "N") 
    {document.getElementById("Obs419").removeAttribute("disabled")}
    else
{document.getElementById("Obs419").setAttribute("disabled",true)}}}
</script>

现在很明显我只能将其应用于问题419,参考文本框观察(Obs419)。 我如何应用JS来涵盖其他问题,因为整个调查问卷中的textareas将是相同的。 Textarea id随每个新问题而变化(Obs420,Obs421等)。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果您可以将ID传递到此radioChange()

onchange='radioChange(this, '419')'函数中
 <label><input type="radio" name="Radio419" value="Y" id="Radio_419Y" onchange='radioChange(this, '419')'>Yes</label>

然后你会在radioChange()内获得单选按钮(可以点击)的ID,并且你需要在动态ID下面写下代码。

document.radioChange = function (button, id)
  {if(button.checked ) {if (button.value === "N") 
    {document.getElementById("Obs"+id).removeAttribute("disabled")}
    else
{document.getElementById("Obs"+id).setAttribute("disabled",true)}}}

<强>更新

首先,您的两个textarea代码都未关闭

<textarea name="comment" id="Comm419" </textarea></div>
//-----------------------------------^

其次,您必须在双引号""中传递ID,例如

onchange='radioChange(this, "419")'

以下是传递动态ID的DEMO