Я делаю проект Ruby on rails, где я пытаюсь закодировать переменные в форме html, так что мне не нужно вручную писать столько кода. Однако я понял, что если я буду выражать выражение в теге id, JS-код не будет работать. например, <div class="field" id="barcode_type1">
работает, но <div class="field" id="barcode_type#{i}">
где я от 1 до 10 не работает.Циклическое выражение в теге HTML div для работы с Javascript
Я предполагаю, что оценка выражения в html не будет вызываться на стороне Javascript, я также подозреваю, что, возможно, turbolinks не будет ждать, пока тег id будет оцениваться. Так что я подозреваю, что я не могу использовать выражение в теге id или что мне нужно изменить turbolinks.
в моем html.erb
<% for i in 1..10 %>
<div class="field" id="type#{i}">
<%= f.label "type#{i}" %>
<%= f.select "type#{i}" ,['text','barcode']%>
</div>
<div class="field" id="barcode_type#{i}">
<%= f.label "barcode_type#{i}" %>
<%= f.text_field "barcode_type#{i}" %>
</div>
</div>
в моих .js файл
$(document).on('turbolinks:load', function(){
if ($('#type1').find('option:selected').val() != "barcode")
{
$('#barcode_type1').hide();
$("#barcode_type1").attr('disabled','disabled');
}
else
{
$("#barcode_type1").removeAttr('disabled');
$('#barcode_type1').show();
}
$('#type1').on('change', function(){
if ($('#type1').find('option:selected').val() != "barcode")
{
$('#barcode_type1').hide();
$("#barcode_type1").attr('disabled','disabled');
}
else
{
$("#barcode_type1").removeAttr('disabled');
$('#barcode_type1').show();
}
}) ...
....
это сработало, спасибо большое – leo277