2014-01-27 4 views
3

Я хочу, чтобы флажок со значением 2 автоматически проверялся, если установлен флажок со значением 1. Оба имеют одинаковый идентификатор, поэтому я не могу использовать getElementById.check checkbox, если установлен еще один флажок

HTML:

<input type="checkbox" value="1" id="user_name">1<br> 
<input type="checkbox" value="2" id="user_name">2 

Я устал:

var chk1 = $("input[type="checkbox"][value="1"]"); 
var chk2 = $("input[type="checkbox"][value="2"]"); 

if (chk1:checked) 
     chk2.checked = true; 
+3

вы должны указывать разные идентификаторы для разных элементов. –

+1

Не могу поделиться тем же ID с несколькими элементами !!! – goseo

ответ

5

Вы должны изменить свой HTML и JQuery на это:

var chk1 = $("input[type='checkbox'][value='1']"); 
var chk2 = $("input[type='checkbox'][value='2']"); 

chk1.on('change', function(){ 
    chk2.prop('checked',this.checked); 
}); 
  1. id уникален, вместо этого вы должны использовать класс.

  2. Ваш селектор для и chk2 неверен, соедините его правильно, используя ', как указано выше.

  3. Использования change() функции для обнаружения при первом галочки или незарегистрированными затем изменить состояние проверяется для второго флажка с использованием prop().

Fiddle Demo

0

Id должен быть уникальным, так что установить различные ids свои элементы, кстати, вы должны использовать .change() событие для достижения того, что вы хотеть.

Попробуйте,

HTML:

<input type="checkbox" value="1" id="user_name1">1<br> 
<input type="checkbox" value="2" id="user_name2">2 

JS:

var chk1 = $("input[type='checkbox'][value='1']"); 
var chk2 = $("input[type='checkbox'][value='2']"); 

chk1.change(function(){ 
    chk2.prop('checked',this.checked); 
}); 
+0

@downvoter, Можете ли вы указать причину вашего downvote.? Я что-то пропустил. Благодарю. –

1

ошибка, вероятно, сюда "input[type="checkbox"] Здесь ваш флажок из кавычек, так что вы запрос ищет input[type=][value=1]

изменить его на "input[type='checkbox'] (используйте одинарные кавычки внутри двойной кавычки, хотя вам не нужно указывать флажок)

http://api.jquery.com/checked-selector/

+0

Подождите, вы отредактировали сообщение точно так же? Нужно ли это редактировать? – Maxzeroedge

+0

Я только отформатировал ваш ответ. Вы можете вернуть его обратно, если хотите проигнорировать его. –

+0

ОК, спасибо. Я думал, что вы, возможно, захотели добавить, но пропустили – Maxzeroedge

1

Вам необходимо изменить ID одного. Это запрещено стандартом W3C (следовательно, классы против ID). jQuery обрабатывает только первый идентификатор, но большинство основных браузеров будут обрабатывать идентификаторы, подобные классам, поскольку они знают, что разработчики испортили.

Решение:

<input type="checkbox" value="1" id="user_name">1<br> 
<input type="checkbox" value="2" id="user_name_2">2 

С этим JS:

var chk1 = $('#user_name'); 
var chk2 = $('#user_name2'); 

//check the other box 
chk1.on('click', function(){ 
    if(chk1.is(':checked')) { 
    chk2.attr('checked', true); 
    } else { 
    chk2.attr('checked', false); 
    } 
}); 

Для получения дополнительной информации о том, почему это плохо использовать ID Посмотрите это: Why is it a bad thing to have multiple HTML elements with the same id attribute?

0

сначала создать вход типа флажок:

<input type='checkbox' id='select_all'/> 


    $('#select_all').click(function(event) { 
      if(this.checked) { 
       $(':checkbox').each(function() { 
       this.checked = true;       
       }); 
      } 
      }); 
+0

в вашем случае, вместо select_all сделайте свой id = имя пользователя –

Смежные вопросы