【问题标题】:How can I exclude elements which aren't visible from a jQuery selector?如何排除在 jQuery 选择器中不可见的元素?
【发布时间】:2015-09-09 11:54:42
【问题描述】:

我有一个带有复选框的表单元素,其中包含“昵称”切换字段。我正在验证所有字段都不为空,并在所有字段都输入值后启用页面上的按钮。

但是,我有一些用户看不到的输入字段,因为它们位于具有 display:none; CSS 属性的 <div> 元素中。如何在 jQuery 中排除这些元素,只对可见的字段进行验证?

HTML

<input name="cvv" type="text">
<span class="checkbox"></span>
<p>Save this card for faster transactions<br>Note: Your CVV number will not be stored</p> 
<div class="col-md-6 nicknameBlock" id="nickNameToggle">    
    <input name="" type="text" placeholder="Nick Name" class="textbox textbox50 required">
</div>
<div class="row center">
    <a href="javascript:" class="bt btblue disableClick" id="submitBtn">
    <img src="images/icon_pay.png" > PAY</a>
</div>

CSS

.nicknameBlock{
  display:none;
}

JavaScript

activatePayButton('submitBtn'); 
function activatePayButton(formId){
    $form = $('#'+formId);     
    $form.find(':input').on('change keyup blur', function(event) {
        var disable = false;      
        $form.find("input[type!='hidden']").each(function(i, el) { 

        });
    });
}

【问题讨论】:

  • 我已经编辑了你的问题,试图让你的问题更清楚。如果我误解了,请随时回滚或edit发帖自行澄清。

标签: jquery


【解决方案1】:

好的!让我们逐行看:

activatePayButton('submitBtn'); // this is the id of anchor which has img
 function activatePayButton(formId){
     $form = $('#'+formId);  // so this selector selects the anchor not form element   
     $form.find(':input').on('change keyup blur', function(event) { 
    // as $form is an anchor which has only img as child
    // you don't have any input to bind any event on it
       var disable = false;      
       $form.find("input[type!='hidden']").each(function(i, el) { 
          // that is why this doesn't get executed.
       });
     });
 }

【讨论】:

  • 我的表单包含两个或多个隐藏字段。这就是我进行检查的原因,即(
  • 你能用你各自的表单和表单元素发布一个小提琴吗?
  • @vishnu 这部分很好,但您仍然需要解决 Jai 用您的代码指出的其他问题。还有一个主要问题(不包括对用户不可见的元素)需要解决,NachoDawg 的answer 向您展示了如何解决。
【解决方案2】:

真的很简单,真的

if($(".nicknameBlock").is(":visible")) { alert("Im visible now") }

【讨论】:

    猜你喜欢
    • 2017-06-27
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多