2017-02-16 3 views
-1

J'essaie de personnaliser ma boutique basée sur prestashop avec une nouvelle fonctionnalité, et je suis coincé. J'ai une sélection de méthodes de paiement radio générée par JS, mais je n'arrive pas à comprendre comment faire pour que le premier (i = 0) soit coché par défaut. Les méthodes de paiement sont numérotées et la première est i = 0. J'ai essayé if (i == 0) {'checked="checked"' } mais je ne fonctionne pas.JS généré radio sélection- comment faire la première position par défaut

Voici le code qui génère les méthodes de paiement:

$('.payment_module').each(function(i) 
     { 
     var a = $(this).find('a'); 
     html += '<table class="resume table table-bordered'+(currentPaymentMethod == a.attr('href') ? ' selected' : '')+'"><tr>'; 
     html += '<td class="td1_payment"><input type="radio" name="id_method_paymend" id="payment_method_id_'+i+'" '+(currentPaymentMethod == a.attr('href') ? : '')+' value="'+i+'" class="wysylka_w_payment" data-href='+a.attr('href') if (i == 0) {'checked="checked"' }+' /></td>'; 
     var img = $(this).find('a').css('background-image').replace(/.*\s?url\([\'\"]?/, '').replace(/[\'\"]?\).*/, ''); 
     html += '<td class="td2_payment"><label for="payment_method_id_'+i+'" class="img_w_payment"><img src="'+img+'" alt="" /></label></td>'; 
     //$(this).find('img').remove(); 
     html += '<td class="td3_payment"><label for="payment_method_id_'+i+'" class="opis_w_payment">'+a.html()+'</label></td>'; 
     html += '</tr></table>'; 
     $(this).attr('id', 'payment_method_'+i+''); 
    }); 

Des idées? Je suppose que la solution pourrait être simple, mais je ne connais pas très bien JS.

Répondre

1

Vous ne pouvez pas utiliser if au milieu d'une expression. Vous pouvez utiliser l'opérateur conditionnel, bien que (tout comme la précédente avec currentPaymentMethod):

html += '<td class="td1_payment"><input type="radio" name="id_method_paymend" id="payment_method_id_'+i+'" '+(currentPaymentMethod == a.attr('href') ? : '')+' value="'+i+'" class="wysylka_w_payment" data-href='+a.attr('href') + (i == 0 ? ' checked="checked"' : '') +' /></td>'; 
// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

Brisons que dans plusieurs lignes pour le rendre plus clair:

html += '<td class="td1_payment"><input type="radio"'; 
html += 'name="id_method_paymend" id="payment_method_id_'+i+'"'; 
html += (currentPaymentMethod == a.attr('href') ? : ''); // <== The earlier one 
html += 'value="'+i+'" class="wysylka_w_payment" '; 
html += ' data-href='+a.attr('href'); 
html += (i == 0 ? ' checked="checked"' : '');    // <== The added one 
html += ' /></td>'; 

Autres notes:

  • Le conditionnel utilisant currentPaymentMethod est une erreur de syntaxe, il a besoin de quelque chose entre le ? et le
  • Vous voulez probablement des guillemets autour de la valeur de l'attribut data-href
  • Note l'espace avant checked=, il est donc pas percuté contre la valeur data-href
  • propose d'ajouter un espace avant name= et value= pour la même raison
+0

Merci pour la réponse, maintenant je comprends plus de ce que je lis. Je l'ai fait comme tu l'as suggéré, mais ça ne marche toujours pas. Je vais continuer à essayer, peut-être que je vais comprendre. Il semble qu'il y ait un intervalle sur le site final qui a changé les classes pour "vérifié" quand j'ai choisi une méthode de paiement mais je ne peux pas sembler comprendre d'où vient-il. – DRPC