使用输入“Id”而不是输入“名称”

时间:2012-02-13 14:31:47

标签: javascript

嘿伙计们我设法得到一个文本输入并选择框来更新基于输入框使用一些javascript ....但我们改变了我们的表单变量,所以我不能再使用输入“名称”...我现在需要使用id。我怎样才能改变我的javascript使用id来做我目前正在做的事情?

JSP:

TAMCN:&nbsp;<input type="text" id="tamcn" name="tamcn"  value=""  size="6" maxlength="5" onkeyup="javascript:tamcnSearchUpdated(this.value,'detSearchForm')" onkeypress="javascript:return noenter();" autocomplete="off" />
    <select id="tamcnList"  name="filterCriteria('TAMCN').values" onchange="javascript:this.form.tamcn.value = '';">
    <option value="">&nbsp;</option>
    <c:forEach var="tamcn" items="${tamcns}"><option value="${tamcn.code}">${tamcn.code}</option></c:forEach>
</select>

的javascript:

  function tamcnSearchUpdated(tamcn, formName)
    {
        var tamcnUpper = tamcn.toUpperCase();
        document.forms[formName].elements.tamcn.value = tamcnUpper;

        var len = tamcn.length;
        if ( tamcnUpper.indexOf('*') >= 0 )
        {
            document.forms[formName].elements['tamcnList'].options[0].selected = 'selected';
            return;
        }

        for (var i = 0; i < document.forms[formName].elements['tamcnList'].options.length; i++)
        {
            if (document.forms[formName].elements['tamcnList'].options[i].text.substr(0,len) == tamcnUpper)
            {
                document.forms[formName].elements['tamcnList'].options[i].selected = 'selected';
                return;
            }
        }

2 个答案:

答案 0 :(得分:2)

使用document.getElementById()

所以,而不是

document.forms[formName].elements['tamcnList']

document.getElementById('tamcnList')

您可能希望将其分配给变量,而不是每次都重复它。保留您的代码DRY

另见:

答案 1 :(得分:2)

document.getElementById('tamcnList').options[0].selected;

但是,请记住,ID在整个页面中必须是唯一的。如果页面中有其他id="tamcnList"元素,则会失败并且您很可能会获得错误的元素。