如何增加此javascript中的参数数量?

时间:2012-04-02 23:23:59

标签: javascript textarea radio-button

声明:我不确定这是否是一个参数。请指教。

我有一份医疗问卷表格,里面有近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来添加参数??

1 个答案:

答案 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';
}

现在它是一个通用函数。对“隐藏”功能也这样做。

最后,您可以更新验证函数以循环遍历表单输入字段数组,而不是查看一个字段。

  1. var arrElements = document.getElementsByTagName("input");
  2. 在你的循环中:if( (objElement.type === "radio") && (objElement.checked) ) {
  3. 请勿使用if(objElement.id == 'yes'),检查当前字段的值:if(objElement.value == 'yes')
  4. 最后,您可以从相关的textarea中获取文字:objTextArea = document.getElementByName( objElement.name + "_text" );
  5. 因此,您只是将每个现有函数设为通用函数并查找每个字段的元数据,而不是尝试为每个字段编写代码。