簡體   English   中英

jQuery從HTML塊中刪除錯誤標簽

[英]jQuery remove error label from HTML block

字段內容更改時,我嘗試從HTML中刪除錯誤標簽。 它在inputselect上工作正常,但在input-group不能正常工作。 我想要一個適用於所有HTML實例的命令。

我的問題在這里有一個JSFIDDLE

我的HTML:

<div class="col-xs-12">
  <div class="form-group">
    <select class="form-control error-input" id="cc-exp_month" name="cc-exp_month" autocomplete="cc-exp_month" required="">
      <option value="01">01</option>
      <option value="02">02</option>
      <option value="03">03</option>
      <option value="04">04</option>
      <option value="05">05</option>
      <option value="06">06</option>
      <option value="07">07</option>
      <option value="08">08</option>
      <option value="09">09</option>
      <option value="10">10</option>
      <option value="11">11</option>
      <option value="12">12</option>
    </select>
    <label class="error-message">This expiry date is invalid</label>
  </div>
</div>

<div class="col-xs-12">
  <div class="form-group">
    <input type="text" class="form-control cc-name  error-input" placeholder="Card Name" name="cc-name" id="cc-name" autocomplete="cc-name" required="">
    <label class="error-message">This card is invalid</label>
  </div>
</div>

<div class="col-xs-12">
  <div class="form-group">
    <div class="input-group">
      <input type="tel" class="form-control cc-cvv error-input" placeholder="•••" maxlength="4" name="cc-cvv" id="cc-cvv" autocomplete="off" required="" data-numeric="">
      <span class="input-group-addon">
                            <a href="#" id="cvv-popover" data-toggle="popover" data-trigger="hover" title="" data-placement="top" data-original-title="CVV">
                                <i class="icon-help ion-fw"></i>
                            </a>
                        </span>
    </div>
    <label class="error-message">Invalid cvv</label>
  </div>
</div>

我的JS刪除更改時的錯誤類和標簽:

$('#cc-exp_month').change(function() {
  $('#cc-exp_month').removeClass('error-input');
  $('#cc-exp_month').parent('.form-group').find('label.error-message').remove();
});

$('#cc-name').change(function() {
  $('#cc-name').removeClass('error-input');
  $('#cc-name').parent('.form-group').find('label.error-message').remove();
});

$('#cc-cvv').change(function() {
  $('#cc-cvv').removeClass('error-input');
  $('#cc-cvv').parent('.form-group').next('.error-message').remove();
});

CVV字段會松散其類,但我無法刪除以下錯誤標簽。 我正在尋找一種可以在兩個實例(輸入和輸入組)上都可以使用的“通用” jquery鏈式命令。

謝謝!

小提琴

$('input').change(function() {
  $(this).removeClass('error-input');
  $(this).closest('.form-group').find('label.error-message').remove();
});

$('select').change(function() {
  $(this).removeClass('error-input');
  $(this).closest('.form-group').find('label.error-message').remove();
});

如果您在html中查找,則.cc-cvv .input-group的最接近的父.cc-cvv.input-group而不是.form-group 嘗試改變

$('#cc-cvv').parent('.form-group').next('.error-message').remove() 

$('#cc-cvv').parent('.input-group').next('.error-message').remove()

您不能在輸入標簽上使用change事件對inputbox使用keyup或keydown事件:

$('#cc-name').keydown(function() {
  $('#cc-name').removeClass('error-input');
  $('#cc-name').parent('.form-group').find('label.error-message').remove();
});

利用事件冒泡

$("div.form-group").on("change", function() {
    var div = $(this);
    div.find(".error-input").removeClass("error-input");
    div.find("label.error-message").remove();
})

小提琴

您可以使用jQuery 最接近的函數來實現此目的,並使用$(this)選擇鏈接的選擇器。

例如

$(function() {
  $('#cc-exp_month, #cc-name, #cc-cvv').on('change', function() {
    // Do whatever validation you need..

    $(this).removeClass('error-input');
    $(this).closest('.form-group').find('label.error-message').remove();
  });
});

這是您的摘錄。

 $(function() { $('#cc-exp_month, #cc-name, #cc-cvv').on('change', function() { // Do whatever validation you need.. $(this).removeClass('error-input'); $(this).closest('.form-group').find('label.error-message').remove(); }); }); 
 .error-message { color: red; } .error-input { border-color: red; } 
 <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="col-xs-12"> <div class="form-group"> <select class="form-control error-input" id="cc-exp_month" name="cc-exp_month" autocomplete="cc-exp_month" required=""> <option value="01">01</option> <option value="02">02</option> <option value="03">03</option> <option value="04">04</option> <option value="05">05</option> <option value="06">06</option> <option value="07">07</option> <option value="08">08</option> <option value="09">09</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select> <label class="error-message">This expiry date is invalid</label> </div> </div> <div class="col-xs-12"> <div class="form-group"> <input type="text" class="form-control cc-name error-input" placeholder="Card Name" name="cc-name" id="cc-name" autocomplete="cc-name" required=""> <label class="error-message">This card is invalid</label> </div> </div> <div class="col-xs-12"> <div class="form-group"> <div class="input-group"> <input type="tel" class="form-control cc-cvv error-input" placeholder="•••" maxlength="4" name="cc-cvv" id="cc-cvv" autocomplete="off" required="" data-numeric=""> <span class="input-group-addon"> <a href="#" id="cvv-popover" data-toggle="popover" data-trigger="hover" title="" data-placement="top" data-original-title="CVV"> <i class="icon-help ion-fw"></i> </a> </span> </div> <label class="error-message">Invalid cvv</label> </div> </div> 

這是您的工作代碼。

 $("div.form-group").on("change", function() { var div = $(this); if(div.find('input').val() != ""){ div.find(".error-input").removeClass("error-input"); div.find("label.error-message").hide(); }else{ div.find("input").addClass("error-input"); div.find("label.error-message").show(); } }) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM