声明:我不确定这是否是一个参数。请指教。
我有一份医疗问卷表格,里面有近19个是和没有单选按钮。每个问题的单选按钮必须有一个唯一的输入名称才能使其正常工作。如果选择了是单选按钮,我设法找到一个合适的代码来切换文本区域,但它只能在输入名称之一中工作,还有18个需要它才能正常工作。
我的主要问题是:
function displayTextBox()
{
var objElement = document.getElementById('addmed');
addmed.style.display = 'block';
addmed.style.visibility = 'visible';
}
function hideTextBox()
{
var objElement = document.getElementById('addmed');
addmed.style.display = 'none';
addmed.style.visibility = 'hidden';
}
function validate()
{
var arrElements = document.getElementsByName('medq');
var objElement;
var boolContinue = false;
var objaddmedtext;
for(var i=0, _length=arrElements.length; i<_length; i++)
{
objElement = arrElements[i];
if(objElement.checked)
{
if(objElement.id == 'yes')
{
objaddmedtext = document.getElementById('addmedtext');
if(strTrim(objaddmedtext.value).length>0)
{
boolContinue = true;
break;
}
}
else
{
boolContinue = true;
break;
}
}
}
if(boolContinue)
{
alert('Continue, user completed the information.')
}
else
{
alert('Ask user to complete the data.')
}
}
/**
* Removes all white space characters from the string.
*
* @param: {String} String to trim.
*
* @return {String} Trimed string.
*/
function strTrim(strTrim)
{
return strTrim.replace(/^\s+|\s+$/g, '');
}
看看这个javascript,一个textarea
<div id="addmed" style="display:none;visibility:hidden; margin-left:10px; width:110px;">
<textarea id="addmedtext" cols="60" rows="6" placeholder="Please give details with dates"></textarea>
</div>
仅当为选择了是单选按钮时,才会出现
<tr>
<td width="33">1.</td>
<td width="491">Heart or circulatory problems including: high blood pressure, heart attack, angina, heart murmur, heart failure, palpitations, circulatory problemseg. whitefinger, blocked arteries, stroke aneurysm.</td>
<td width="68"><input name="medq" id="yes" type="radio" value="yes" onclick="displayTextBox()"/><label for="yes"> Yes </label></td>
<td width="78"><input name="medq" id="no" type="radio" value="no" onclick="hideTextBox()"/><label for="no"> No </label></td>
然而,这只是一个问题......我还有18个问题name="medq 1 to 18 "
。
任何想法如何编辑javascript来添加参数??
答案 0 :(得分:1)
首先,您需要在每个单选按钮上都有唯一的ID。但是你需要在每对YES / NO按钮上使用相同的NAME来处理所选择的一对。所以你可以拥有
<input type="radio" name="foo" id="foo_y" value="yes" /><label for="foo_y">Yes</label>
<input type="radio" name="foo" id="foo_n" value="no" /><label for="foo_y">Yes</label>
<textarea id="foo_text" name="foo_text"><textarea>
现在,对于“是”单选按钮,您可以添加onclick =“displayTextBox(this)”。 “this”是指向当前单选按钮的指针。
然后您可以像这样更新函数:
function displayTextBox( f ) { // f is the field that was clicked
f.style.display = 'block';
f.style.visibility = 'visible';
}
现在它是一个通用函数。对“隐藏”功能也这样做。
最后,您可以更新验证函数以循环遍历表单输入字段数组,而不是查看一个字段。
var arrElements = document.getElementsByTagName("input");
。 if( (objElement.type === "radio") && (objElement.checked) ) {
。if(objElement.id == 'yes')
,检查当前字段的值:if(objElement.value == 'yes')
objTextArea = document.getElementByName( objElement.name + "_text" );
因此,您只是将每个现有函数设为通用函数并查找每个字段的元数据,而不是尝试为每个字段编写代码。