2016-12-16 1 views
0

У меня есть существующее веб-приложение. Теперь я столкнулся с проблемой, связанной с некоторыми javascript. У меня есть список флажков с тем же именем, именем и именем. Это означает, что все флажки будут иметь один и тот же класс, имя и идентификатор. Только значение будет отличаться для каждого флажка.Проблема с установкой флажка с определенным значением среди всех флажков с одинаковыми идентификаторами и классами с использованием javascript

Код выглядит следующим образом:

<tr> 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="Austin Engineering" /></td> 
</tr> 

<tr> 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="FAG" /></td> 
</tr> 
<tr> 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="Jeekay" /></td> 

</tr> 

Теперь проблема заключается в том, что через JavaScript после проверки некоторого условия я должен установить флажок с определенным значением.

Я пробовал следующую строку кода, но она не работает.

$("#brand_id_").attr("value",'FAG').attr("checked", true); 

Это был первый флажок. И этот флажок имеет другое значение.

Пожалуйста, помогите мне найти решение для этого.

Спасибо заранее!

+1

использование одинаковых 'id' недействительны ... – kukkuz

ответ

3

Используйте селектор классов и проверьте атрибут value.

$(".brand_tag[value='FAG']").attr("checked", true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<tr> 
 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="Austin Engineering" /></td> 
 
</tr> 
 

 
<tr> 
 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="FAG" /></td> 
 
</tr> 
 
<tr> 
 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="Jeekay" /></td> 
 

 
</tr>

Хотя это будет работать, но обратите внимание, что элемент с повторяющимися идентификаторами означает, что ваш HTML является недействительным. Старайтесь избегать этого.

2

Вы можете попробовать это

$(".brand_tag[value=FAG]").attr("checked","checked"); 
0

Вы можете использовать

$("input[type=checkbox][value='FAG']").prop("checked", true); 

как ваш код ATTR ("значение", 'FAG') изменит значение флажка

1

Первый из все, что вам нужно, установите флажки с разными идентификаторами, а затем вы можете использовать селектор классов или селектор идентификаторов или селектор тегов.

Если вы хотите установить значение и проверяются свойством всех флажков «FAG» и верно, соответственно, используйте следующее:

$(".brand_tag").attr("value",'FAG').attr("checked", true); 

Если вы хотите задать свойства для определенного флажка, использовать селектор идентификатора после изменения идентификаторов ваших флажков следующим образом:

$("#NewID1").attr("value",'FAG').attr("checked", true); 

NewID1, где это идентификатор этого конкретного флажка, который вы хотите, чтобы изменить его свойство.

+0

установка уникальный id не требуется думаю. Я внедрил предложение, предоставленное @anu, и оно работает нормально. – Abhradip

+0

Правильное решение для меня идеально подходит. Однако вы также можете изменить идентификаторы и выбрать идентификатор определенного флажка и установить его атрибуты вместо проверки атрибута value. Это будет выглядеть так: $ ("# NewID1"). Attr ("checked", true); где NewID1 - это идентификатор флажка со значением свойства = 'FAG' –

+0

«Глобальный атрибут id определяет уникальный идентификатор (ID), который должен быть уникальным во всем документе. Его цель - идентифицировать элемент при связывании (используя идентификатор фрагмента), сценариев или стилей (с помощью CSS). " https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id Удачи вам в вашем подходе, будьте готовы к удивлению – vadimk

0

Проверьте мои примеры :-)

https://jsfiddle.net/6cz22b18/4/

<table id="brand_id_table"> 
    <tr> 
    <td><input type="text" id="txtInput" value="FAG"></td> 
    <td><button onclick="$.setCheckbox()">Check</button></td> 
    </tr> 
    <tr> 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="Austin Engineering" />Austin Engineering</td> 
    </tr> 
    <tr> 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="FAG" />FAG</td> 
    </tr> 
    <tr> 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="Jeekay" />Jeekay</td> 
    </tr> 
    <tr> 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="FAG" />FAG</td> 
    </tr> 
</table> 

$.setCheckbox = function() { 
    // reset 
    $("#brand_id_table").find("input:checkbox").attr('checked', false); 

    // set checkbox 
    $("#brand_id_table").find("input:checkbox").each(function() { 
    if($(this).val() == $("#txtInput").val()) { 
     $(this).attr('checked', true); 
    } 
    }); 
} 
  1. «$ ("# brand_id_table").find ("input: checkbox") '- это пункты
  2. , поэтому вам нужно использовать каждую функцию(), которая похожа на инструкцию «for».