在父JavaScript中查找元素的最佳方法

在父JavaScript中查找元素的最佳方法,javascript,jquery,Javascript,Jquery,我有一个功能,当用户键入城市的邮政编码时,城市名称被设置为城市名称输入字段。搜索工作正常,但我无法获取输入字段的相对id并在那里设置名称。我不能硬编码它的ID,因为这些表单是动态生成的 file.JS HTML {%if client_form.post_code.errors%} {%endif%} 此表单是动态生成的,因此我需要能够通过指定正则表达式或使用通配符来查找城市输入id,就像我所做的那样 el.parent().next().find("[id*=city]").val(res

我有一个功能,当用户键入城市的邮政编码时,城市名称被设置为城市名称输入字段。搜索工作正常,但我无法获取输入字段的相对id并在那里设置名称。我不能硬编码它的ID,因为这些表单是动态生成的

file.JS HTML

{%if client_form.post_code.errors%}
{%endif%}
此表单是动态生成的,因此我需要能够通过指定正则表达式或使用通配符来查找城市输入id,就像我所做的那样

el.parent().next().find("[id*=city]").val(result.name);
解释

el.parent()

.find(“[id*=city]”)



id将更改,因此
id\u form-0-city
将在另一个生成的div中变为
id\u form-1-city
。我必须能够识别应该从哪个父项更改其子项的输入值。在这种情况下,t应该始终是调用函数的字段的父项。是否需要将
id=“id\u form-0-city”
值设置为
id\u form-0-post\u code
?@guest271314否,我想更改字段的值,而不是属性id。尝试此
$(e.target)。父项(.city auto”)。查找(“[id$=city]”val(result.name);因为它以cityYes结尾,请参阅帖子。可以选择
.parent().next()
然后选择
.find(“[id*=city]”
Yeps。成功了。next()做什么?它向下推进一级?“next()做什么?它向下推进一级?”是的,关于
el.parent()
。看,哦,好的。我现在明白了。谢谢你的解释。为什么parent().children(“class”).find(“id”)不起作用?“为什么parent().children(“class”).find(“id”)不起作用?”
。parent().children()
将引用相同的父元素,而不是parentI的下一个元素。家长(“城市汽车”)。孩子(“班级”)。查找(“id”)?我认为他们可以找到父母(“限制”),然后从中得到指定的孩子(“类”),并在其中寻找一些东西(“一些东西”)。
<div class="row 50% city-auto">
    <div class="3u 12u(narrower)">
        <div class="form-warning">
            {% if client_form.post_code.errors %}
            <spam><img src="{{ STATIC_URL }}icons/warning_triangle_16.png" class="icon"> <spam class="icon fa-angle-down"></spam></spam>
            {% endif %}
        </div>
        <!-- Triggers JavaScript -->
        <input id="id_form-0-post_code" maxlength="5" name="form-0-post_code" placeholder="Post nr." type="text">
    </div>
    <div class="6u 12u(narrower)">
        <div class="form-warning">
        </div>
        <!-- Should get value replaced by JavaScript -->
        <input id="id_form-0-city" maxlength="30" name="form-0-city" placeholder="By" type="text" readonly="">
    </div>
</div>
el.parent().next().find("[id*=city]").val(result.name);
<div class="3u 12u(narrower)">
<div class="6u 12u(narrower)">
<input id="id_form-0-city" maxlength="30" name="form-0-city" placeholder="By" type="text" readonly="">