以下是我要解决的问题: 我有很多问题。
每个问题都包括一个响应部分,其中包括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等)。
提前谢谢。
答案 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。