2017-02-16 35 views
-1

Я пытаюсь настроить мой магазин на основе prestashop с новой функцией, и я застрял. У меня есть JS-генерация радио выбора методов оплаты, но я не могу понять, как сделать первый (i = 0) установленным по умолчанию. Способы оплаты пронумерованы, а первый - i = 0. Я пробовал if (i == 0) {'checked="checked"' }, но я не работаю.JS сгенерированный радиоприемник - как сделать первую позицию по умолчанию одной

Вот код, который генерирует методы оплаты:

$('.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+''); 
    }); 

Любые идеи? Я предполагаю, что решение может быть простым, но я не знаю JS, что хорошо.

ответ

1

Вы не можете использовать if в середине выражения. Вы можете использовать условный оператор, хотя (как и раньше с 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>'; 
// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

Давайте разберем, что на несколько строк, чтобы сделать его более ясным:

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>'; 

Другие ноты:

  • Условное использование currentPaymentMethod является синтаксической ошибкой, ей нужно что-то между ? и :
  • Вы, вероятно, хотите кавычки значения атрибута data-href
  • Обратите внимание на пробел перед checked=, так что это не протаранил против data-href значения
  • Suggest добавив пробел перед name= и value= по той же причине
+0

Спасибо для ответа, теперь я понимаю больше того, что я читаю. Я сделал это так, как вы предлагали, но он все равно не работает. Я буду пытаться, может быть, я все выясню. Кажется, что на последнем сайте есть промежуток, который менял классы на «проверенные», когда я выбираю способ оплаты, но я не могу понять, откуда он взялся. – DRPC