1

我有多个使用不同输入名称和 ID 动态创建的表单。他们将拥有的唯一独特之处是标签的内部 HTML。是否可以通过带有 jQ​​uery 的标签内部 HTML 来选择输入?这是我的一个患者出生日期块的示例,除了 innerHTML 之外,还有很多并且都是唯一的。

<div class="iphorm-element-spacer iphorm-element-spacer-text iphorm_1_8-element-spacer">
<label for="iphorm_081a9e2e6b9c83d70496906bb4671904150cf4b43c0cb1_8">events=Object { mouseover=[1], mouseout=[1]}handle=function()data=Object { InFieldLabels={...}}
    Patient DOB
    <span class="iphorm-required">*</span>
</label>
<div class="iphorm-input-wrap iphorm-input-wrap-text iphorm_1_8-input-wrap">
    <input id="iphorm_081a9e2e6b9c83d70496906bb4671904150cf4b43c0cb1_8" class="iphorm-element-text iphorm_1_8" type="text" value="" name="iphorm_1_8">events=Object { focus=[1], blur=[1], keydown=[1], more...}handle=function()
</div>
<div class="iphorm-errors-wrap iphorm-hidden"> </div>

这是在 Wordpress 插件中,并且因为我们正在构建允许员工编辑他们的网站(这实际上是一个 Wordpress 网络),所以如果可能,我们不想更改插件。请注意,标签“for”和输入“id”共享相同的动态键,因此这可能是获取 id 的一种方法,但想看看是否有更短的方法来执行此操作。

在这里,我清理了可能不会使用的东西......

<div>
<label for="iphorm_081a9e2e6b9c83d70496906bb4671904150cf4b43c0cb1_8">
    Patient DOB
    <span class="iphorm-required">*</span>
</label>
<div>
    <input id="iphorm_081a9e2e6b9c83d70496906bb4671904150cf4b43c0cb1_8">
</div>

4

3 回答 3

1
var getForm = function(labelInnerHtml) {
    var $labels = jQuery('label');
    $labels.each(function() {
       if (jQuery(this).html() == labelInnerHtml) {
            var for_id = jQuery(this).attr('for');
            return jQuery('#'+for_id);
        }
    });
    return [];
};​​
于 2012-12-17T17:01:37.433 回答
1

您可以使用包含选择器来选择Patient DOB标签,然后找到相关的输入。

$('label:contains("Patient DOB")').parent('div').find('input');

这假设labelandinput被包裹在同一个中div,并且如果不止一对在同一个 中,则可能不起作用div。至少第一部分将为您提供包含 的标签Patient DOB,然后您可以调整后面的部分以找到正确的输入元素。

有关 jquery 选择器的更多帮助,请参阅API

这是一个证明这一点的小提琴。

于 2012-12-17T17:14:07.027 回答
0

输入上的 iphorm_1_8 类对于每个表单元素都是唯一的。所以很简单。

$('.iphorm_1_8');
于 2012-12-19T09:10:18.143 回答