【问题标题】:How to show or hide a div if the div is present and has a value如果 div 存在且具有值,如何显示或隐藏 div
【发布时间】:2021-04-07 20:07:27
【问题描述】:
<fieldset class=​"crm-public-form-item crm-group payment_options-group" style=​"display:​ block !important;​ visibility:​ visible;​">​
<div class=​"crm-public-form-item crm-section payment_processor-section" style=​"display:​ block;​">​
  <div class=​"content">    
    ​<input class=​"payment_processor_1 crm-form-radio" value=​"5" type=​"radio" id=​"CIVICRM_QFID_5_payment_processor_id" name=​"payment_processor_id">    
    <input class=​"payment_processor_2 crm-form-radio" value=​"3" type=​"radio" id=​"CIVICRM_QFID_3_payment_processor_id" name=​"payment_processor_id">​
  </div>​
 </div>​
</fieldset>​

<div id=​"crm-submit-buttons" class=​"crm-submit-buttons" style=​"visibility:​ visible;​ display:​ block;​">
​  <button class=​"crm-form-submit default validate crm-button crm-button-type-upload crm-button_qf_Main_upload" value=​"1" type=​"submit" name=​"_qf_Main_upload" id=​"_qf_Main_upload-bottom">​…​</button>​
</div>​

我有这个 html 块,但我有点卡住了验证。条件是

  • payment_options-group 字段集必须显示在此页面上
  • 并且至少有一个单选按钮被选中
  • 然后显示 crm-submit-buttons div
  • 否则隐藏 crm-submit-buttons div

我尝试了以下但无法使其工作,也不确定如何定义条件 payment_options-group 字段集必须出现在此页面上。这一点很重要,因为“crm-submit-buttons”由其他字段集控制,而该字段集不在此页面上。

     if( $("#payment_options-group").val().length === 1 ) {
     $("div#crm-submit-buttons").show();
     }
else {
$("div#crm-submit-buttons").hide();
}

任何帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: html jquery validation


    【解决方案1】:

    您可以检查长度是否为&gt; 0,然后选中复选框并根据此显示或隐藏 div 显示字段集。

    演示代码

    console.log($(".payment_options-group").length + "--length of fielset")
    console.log($("input[name=payment_processor_id]:checked").length + "--length of chekd")
    //check if fieldset is prsent and checked length if > 0
    if (($(".payment_options-group").length > 0) && ($("input[name=payment_processor_id]:checked").length > 0)) {
      $("div#crm-submit-buttons").show();
    } else {
      $("div#crm-submit-buttons").hide();
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <fieldset class="crm-public-form-item crm-group payment_options-group" style="display:block !important; visibility: visible;">
      <div class="crm-public-form-item crm-section payment_processor-section" style="display:block;">
        <div class="content">
          <input class="payment_processor_1 crm-form-radio" value="5" type="radio" id="CIVICRM_QFID_5_payment_processor_id" name="payment_processor_id">
          <input class="payment_processor_2 crm-form-radio" value="3" type="radio" id="CIVICRM_QFID_3_payment_processor_id" name="payment_processor_id" checked>
        </div>
      </div>
    </fieldset>
    
    <div id="crm-submit-buttons" class="crm-submit-buttons" style="visibility:visible; display:block;">
      <button class="crm-form-submit default validate crm-button crm-button-type-upload crm-button_qf_Main_upload" value="1" type="submit" name="_qf_Main_upload" id="_qf_Main_upload-bottom">​…</button>
    </div>

    【讨论】:

    • 这是您发布的 html 结构?另请查看正在打印的控制台。
    • [Log] 1--fielset 的长度(button.js,第 54 行)[Log] 0--来自控制台的 chekd(button.js,第 55 行)的长度。未选择任何选项时。提交按钮仍然可见。 HTML 是正确的。添加截图。
    • 如何调用代码?点击某个按钮?
    • 不,它是一种形式。预装了所有元素。如果存在多个支付处理器,则通过 JS 调用“fieldset”。如果仅存在一个支付处理器 ID,则“字段集”将被“计费块”替换,如屏幕截图所示。
    • 工作正常检查here。也尝试将您的代码包装在$(document).ready..
    【解决方案2】:

    这是一个带有复选框的演示,可能更容易理解,因为您可以取消选中以看到按钮再次消失:

    $(".crm-submit-buttons").hide(); // hides button on load 
    
    $('.crm-form-radio').on('click', function() {
      if ($('.payment_options-group').length > 0 && $('.crm-form-radio:checked').length) {
        $(".crm-submit-buttons").show();
      } else {
        $(".crm-submit-buttons").hide();
      }
    })
    fieldset{
      width: 200px;
    }
    
    button {
      margin-top: 10px;
      border-radius: 4px;
      background: lightblue;
      display: inline-block;
      padding: 5px 10px;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <fieldset class="payment_options-group">
      <input class="crm-form-radio" value="5" type="checkbox" name="payment_processor_id">
      <input class="crm-form-radio" value="3" type="checkbox" name="payment_processor_id">
    </fieldset>
    
    <div class="crm-submit-buttons"><button>Button</button></div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 2015-07-01
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      • 2011-10-04
      相关资源
      最近更新 更多