2016-09-02 5 views
1

Ich versuche, eine Klasse basierend auf einem Radio-Button-Verhalten hinzuzufügen und zu entfernen. Die Idee ist, wenn der ausgewählte Optionsfeldwert Paypal ist, dann werden alle Eingabefelder der Klasse = "Erforderlich" entfernt, und wenn auf die Kreditkarte umgeschaltet wird, werden alle Felder, die die erforderliche Klasse entfernt haben, die erforderliche Klasse zurückbekommen. Hier ist, wie ich es tueHinzufügen und Entfernen von Klasse beim Umschalten durch Radiobutton

$('input[name*="payment"]').on('change', function() { 
    var type = this.value; 
    switch (type) { 
    case 'paypal': 
     $('#payment input').each(function() { 
     if ($(this).hasClass('required')) { 
      $(this).removeClass('required'); 
      $(this).addClass('requiredFalse'); 
     } 
     }); 
    case 'creditcard': 
     $('#payment input').each(function() { 
     if ($(this).hasClass('requiredFalse')) { 
      $(this).addClass('required'); 
      $(this).removeClass('requiredFalse'); 
     } 
     }); 
    } 
}); 

hier die Geige ist. Kann nicht herausfinden, was ich falsch mache.

https://jsfiddle.net/sghoush1/d225cdrp/1/

+0

versuchen, meine Antwort zu überprüfen, Ihr Code etwas kürzer zu machen. –

Antwort

3

Sie switch-case fehlt die Pausen. Also, wenn Typ "Paypal" war, wurden beide Fälle ausgeführt, so funktioniert Switch. Also versuchen Sie dies:

$('input[name*="payment"]').on('change', function() { 
    var type = this.value; 
    switch (type) { 
    case 'paypal': 
     $('#payment input').each(function() { 
     if ($(this).hasClass('required')) { 
      $(this).removeClass('required'); 
      $(this).addClass('requiredFalse'); 
     } 
     }); 
     break; 
    case 'creditcard': 
     $('#payment input').each(function() { 
     if ($(this).hasClass('requiredFalse')) { 
      $(this).addClass('required'); 
      $(this).removeClass('requiredFalse'); 
     } 
     }); 
     break; 
    } 
}); 
+0

Das war alles, hah ... kann nicht glauben, dass ich das verpasst habe. Jetzt ist es mir peinlich. Danke für das Aufzeigen – soum

1
$(document).ready(function(){ 
$('input[name*="payment"]').on('change', function() { 
    var type = this.value; 
    switch (type) { 
    case 'paypal': 
     $('#payment input').each(function() { 
     if ($(this).hasClass('required')) { 
      $(this).removeClass('required'); 
      $(this).addClass('requiredFalse'); 
     } 
     }); 
     break; 
    case 'creditcard': 
     $('#payment input').each(function() { 
     if ($(this).hasClass('requiredFalse')) { 
      $(this).addClass('required'); 
      $(this).removeClass('requiredFalse'); 
     } 
     }); 
     break; 
    } 
    //console.log(type); 
}); 
}); 
1

toggleClass Versuchen Sie Ihren Code kürzer zu machen.

//To remove require and add requiredFalse 
$(this).toggleClass("required requiredFalse"); 

//To add requireFalse and remove require 
$(this).toggleClass("requiredFalse required"); 

Mehr Informationen zu toggleClass sind hier zu finden. toggleClass

Snippet das Arbeitsbeispiel

$('input[name*="payment"]').on('change', function() { 
 
    var type = this.value; 
 
    switch (type) { 
 
    case 'paypal': 
 
      $('#payment input').each(function() { 
 
      if ($(this).hasClass('required')) { 
 
       $(this).toggleClass("required requiredFalse"); 
 
      } 
 
      }); 
 
      break; 
 
    case 'creditcard': 
 
      $('#payment input').each(function() { 
 
      if ($(this).hasClass('requiredFalse')) { 
 
       $(this).toggleClass("requiredFalse required"); 
 
      } 
 
      }); 
 
      break; 
 
    } 
 
})
.requiredFalse { 
 
    border: 1px solid black; 
 
} 
 

 
.required { 
 
    border: 1px solid red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div>creditcard</div> 
 
<input type="radio" name="payment" value="creditcard"> 
 
<div>paypal</div> 
 
<input type="radio" name="payment" value="paypal"> 
 
<form id="payment"> 
 
    <input class="required" type="text" id="address1"> 
 
    <input type="text" id="address2"> 
 
    <input class="required" type="text" id="zipcode"> 
 
</form>

+0

Das ist großartig. Aber ich denke, toggleClass() hat einige Probleme in IE8 :-( – soum

+0

@soum jetzt ein paar Tage, die meisten Leute verwenden nur die neuesten Browser. –

+0

Einverstanden. Das ist ein gültiger Punkt. – soum

Verwandte Themen