2016-08-22 3 views
1

Ich versuche, ein div zu verbergen, wenn ein span-Element ein bestimmtes Wort enthält. Das Problem, das ich habe, ist, dass die span nur erscheint, nachdem ein Formular übermittelt wurde. Ich habe versucht, meine Verbergen-Funktion on click der Übermittlungsschaltfläche auszuführen, aber das funktioniert nicht, da die Zeitspanne erst angezeigt wird, nachdem auf die Schaltfläche geklickt und das Formular abgeschickt wurde. Ich habe auch versucht, es auf submit() des Formulars laufen zu lassen, aber auch kein Glück (schrieb den Code, den ich unten versucht habe).hide div nach Formular wurde gesendet

HTML

<div class=“deliveryUpsellText”> 
    <p>blabla</p> 
    </div> 


    <ul> 
     <li class=“error-msg”> 
     <ul> 
     <li> 
     <span> Coupon Code “blabla” is not valid 
     </span> 
     </li> 
     </ul> 
     </li> 
    </ul> 


<form id="discount-coupon-form" action="http://dev.blabla.co.uk/cart/couponPost/" method="post"> 
..... 

<button type="button" id="cartCoupon" title="Apply Coupon" class="button applycouponhide" onclick="discountForm.submit(false) ; " value="Apply Coupon"><span style="background:none;"><span style="background:none;">Apply</span></span></button> 

</form> 

jQuery

$j('#cartCoupon').click(function(){ 

     if ($j(".error-msg span:contains('blabla')").length) { 
      $j('.deliveryUpsellText').css({ 
       "display":"none" 
      }); 
      } 
     }); 

Ich habe auch versucht

$j('#discount-coupon-form').submit(function(){ 
if ($j(".error-msg span:contains('blabla')").length) { 
    $j('.deliveryUpsellText').css({ 
     "display":"none" 
    }); 
    } 
}); 

Irgendwelche Ideen, wie ich dies tun könnte?

+0

Was nicht funktioniert hat? Irgendwelche Fehler? –

+0

Der wahrscheinliche Grund Warum es nicht funktioniert, ist, dass wenn Sie auf die Schaltfläche "Senden" klicken/Ihr Formular absenden, Sie auch eine Anfrage an einen Server senden und der Rest Ihres Codes asynchron ausgeführt wird. Daher gibt es keine Spannen mit dieser Text. Wenn der Server reagiert, ist Ihr Code bereits erfolglos ausgeführt worden. Sie müssen Ihren Code ausführen, wenn Sie Ihre Antwort erhalten haben. Haben Sie Zugang zu dem Code, der die Anfrage/den Antrag stellt? –

+0

Sidenote (keine Lösung), Sie könnten '$ j ('. DeliveryUpsellText') verwenden. Hide()' statt '.css ({" display ":" none "})' –

Antwort

2

Sie dieses Zeichen als Zitat ein:“

Sie sollten eine dieser benutzen" oder "

Außerdem haben Sie diese:

Onclick =" discountForm.submit (falsch); "

die, wenn das Objekt discountForm nicht definiert ist, erhalten Sie Fehler, bevor Sie Javascript Teil Parsen.

$(document).ready(function(){ 
 
$('#cartCoupon').on('click',function(){ 
 
if($('.error-msg').find("span:contains('blabla')").length > 0) { 
 
    $('.deliveryUpsellText').hide(); 
 
    } 
 
}); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<div class='deliveryUpsellText'> 
 
    <p>blabla</p> 
 
    </div> 
 

 

 
    <ul> 
 
     <li class="error-msg"> 
 
     <ul> 
 
     <li> 
 
     <span> Coupon Code “blabla” is not valid 
 
     </span> 
 
     </li> 
 
     </ul> 
 
     </li> 
 
    </ul> 
 

 

 
<form id="discount-coupon-form" action="http://dev.blabla.co.uk/cart/couponPost/" method="post"> 
 
..... 
 

 
<button type="button" id='cartCoupon' title="Apply Coupon" class="button applycouponhide" value="Apply Coupon"><span style="background:none;"><span style="background:none;">Apply</span></span></button> 
 

 
</form>