Javascript 按ID获取输入类型值,其中显示不是none

Javascript 按ID获取输入类型值,其中显示不是none,javascript,jquery,drupal,Javascript,Jquery,Drupal,我有多个与条件选择关联的字段。如果条件与其他输入字段不匹配,则在上面的div ID中获取与样式(display:none)关联的输入字段&匹配的字段保持活动状态,它将在上面的div ID中设置(display:block)。。 这是在drupal中,所以我无法控制它…下面是一个示例,它可以生成-- 更新--- 代码更新,我正在使用它获取一个select&alert更改时的值,但它只提供NULL $(document).ready(function() { var price =

我有多个与条件选择关联的字段。如果条件与其他输入字段不匹配,则在上面的div ID中获取与样式(display:none)关联的输入字段&匹配的字段保持活动状态,它将在上面的div ID中设置(display:block)。。 这是在drupal中,所以我无法控制它…下面是一个示例,它可以生成--

更新---

代码更新,我正在使用它获取一个select&alert更改时的值,但它只提供NULL

$(document).ready(function() {
        var price = null;
        $('div.form-item-field-membership-payment-type-und').change(function() {

          $("#edit-field-p1brp-price-und-0-value, #edit-field-sspps-price-und-0-value, #edit-field-sspr1br-price-und-0-value").each(function() {
                if($(this).is(':visible')) {
                    price = $(this).val();
                    alert(price);
                }
            });
        alert(price);   
    });  
    });

您没有设置“显示”属性,显示的默认值为“内联块”。如果需要在条件中选中块或使用内联块,请将“显示”特性设置为“块”。您可以使用访问“显示”属性。我假设您有有效的html,并且只有一个元素具有
id=edit-field-p1brp-price-und-0-value

if($("#edit-field-p1brp-price-und-0-value").css('display') == 'block')
{
    var price = $('#edit-field-sspr1br-price-und-0-value').val();
}
若显示未被阻止,则执行else部分,这可以检查。

您需要使用

$(selector).is(':visible')
查看这个JSFIDLE,在字段中循环

更新

我为您更新了JSFIDLE:

现在,它通过您选择的输入进行循环(查看选择器,您可以使用逗号分隔添加多个元素)

更新为警报

var price;
$("#edit-field-p1brp-price-und-0-value, #edit-field-sspps-price-und-0-value, #edit-field-sspr1br-price-und-0-value").each(function() {
    if($(this).is(':visible')) {
        price = $(this).val();
    }
});
alert(price);
像这样;)

以下是更新的JSFIDLE和警报


缩短这些ID将减少到客户端的总传输大小,从而加快页面速度。这是drupal为条件字段呈现表单元素的方式……啊,我相信你对此无能为力。但是如果你看一下你发布的HTML,你会发现大约80%的HTML负载是用于元素id的。我在页面上也有其他输入类型。我不必获取它们的值。我可以警告我正在处理的所有列出的id的可见输入id内的值吗?这对我有用,但我正在尝试var price=$(This.val();&如果我试图在外部提醒它…它不会给出值,但在内部给出…我必须使用外部的值…使价格在循环之外“全局”。然后将该值添加到可变价格中,然后提醒该价格。。我们应该做到这一点。我更新了我的答案,JSFIDDLE我尝试了这个…这是JFIDLE…内部警报给出值,但外部警报只给出null值…正如您看到的显示:none是输入类型的上述DIV的属性…不起作用..您可以调试以检查出了什么问题,或者制作一个FIDLE来让我们找出出了什么问题。
$(selector).is(':visible')
$("#edit-field-p1brp-price-und-0-value, #edit-field-sspps-price-und-0-value, #edit-field-sspr1br-price-und-0-value").each(function() {
...
}
var price;
$("#edit-field-p1brp-price-und-0-value, #edit-field-sspps-price-und-0-value, #edit-field-sspr1br-price-und-0-value").each(function() {
    if($(this).is(':visible')) {
        price = $(this).val();
    }
});
alert(price);