Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.09.2015, 20:48
Новичок на форуме
Отправить личное сообщение для sergey144010 Посмотреть профиль Найти все сообщения от sergey144010
 
Регистрация: 03.09.2015
Сообщений: 2

Jquery & checkbox
Здравствуйте !
Имеется таблица html в ней пять строк. В каждой строке две колонки.
В первой колонке элемент input type=checkbox.
Во второй колонке текст.
Нужно при клике по всей строке определить выделен чекбокс или нет. Если не выделен то установить галочку, если выделен то снять галочку.
Необходимо чтобы данное действие могло повторяться многократно.

Моя реализация:
Сразу в чём проблема - атрибут checked="checked" устанавливается и удаляется из input по кликам многократно. А сама галочка ОДНОКРАТНО ставиться и убирается, при повторном клике галочки нет, а атрибут есть. То есть галочка не ставится при многократных кликах, а атрибут ставится и убирается. Как сделать чтобы галочка ставилась? Пробовал в Firefox и Chrome.

<!DOCTYPE html>
<html lang="ru">
    <head>
        <meta charset="utf-8">
    </head>
<body>

<table class="table table-striped table-hover">
    <thead>
        <tr>
            <th>Id</th>
            <th>Name</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                <input type=checkbox name="id" value="3603">
            </td>
            <td>name1</td>
        </tr>
        <tr>
            <td>
                <input type=checkbox name="id" value="3795">
            </td>
            <td>name2</td>
        </tr>
        <tr>
            <td>
                <input type=checkbox name="id" value="3796">
            </td>
            <td>name3</td>
        </tr>
        <tr>
            <td>
                <input type=checkbox name="id" value="3797">
            </td>
            <td>name4</td>
        </tr>
        <tr>
            <td>
                <input type=checkbox name="id" value="3798">
            </td>
            <td>name5</td>
        </tr>
    </tbody>
</table>		

    <!-- jQuery -->
    <script src="jquery-2.1.4.min.js"></script>
	<!-- Выбор чекбоксов -->
	<script>
	$(document).ready(function(){
		
		$("table.table > tbody > tr").click(function(){		
			var tdFirst = $(this).children("td:first");
			var inputCheckbox = $(tdFirst).find( $("input[type=checkbox]") );

			if($(inputCheckbox).attr("checked") == "checked"){
				$(inputCheckbox).removeAttr("checked");
			}else{
				$(inputCheckbox).attr("checked","checked");
			};
			
			});
	});
	</script>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 03.09.2015, 21:00
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

if($(inputCheckbox).attr("checked") == "checked")... а если не "checked"?

и $(element).prop('checked', 1 или 0 соответственно), а не attr("checked","checked");
Ответить с цитированием
  #3 (permalink)  
Старый 03.09.2015, 21:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

sergey144010,
<!DOCTYPE html>
<html lang="ru">
    <head>
        <meta charset="utf-8">
    </head>
<body>

<table class="table table-striped table-hover">
    <thead>
        <tr>
            <th>Id</th>
            <th>Name</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                <input type=checkbox name="id" value="3603">
            </td>
            <td>name1</td>
        </tr>
        <tr>
            <td>
                <input type=checkbox name="id" value="3795">
            </td>
            <td>name2</td>
        </tr>
        <tr>
            <td>
                <input type=checkbox name="id" value="3796">
            </td>
            <td>name3</td>
        </tr>
        <tr>
            <td>
                <input type=checkbox name="id" value="3797">
            </td>
            <td>name4</td>
        </tr>
        <tr>
            <td>
                <input type=checkbox name="id" value="3798">
            </td>
            <td>name5</td>
        </tr>
    </tbody>
</table>
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
    $(function() {
    $("table.table > tbody > tr").each(function(indx, el) {
        var inp = $("input:checkbox", el)[0];
        $(el).on("click", function(event) {
            event.target != inp && (inp.checked = !inp.checked)
        })
    })
});
  </script>

</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 04.09.2015, 19:39
Новичок на форуме
Отправить личное сообщение для sergey144010 Посмотреть профиль Найти все сообщения от sergey144010
 
Регистрация: 03.09.2015
Сообщений: 2

Спасибо рони!
В этих четырёх строчках открыл для себя много нового!
Как правильно прочитать следующую строку из кода:
event.target != inp && (inp.checked = !inp.checked)

Цель не равна input и свойству инпута checked присвоить противоположное ему на данный момент значение? Это альтернативный синтаксис if(){} ?
Ответить с цитированием
  #5 (permalink)  
Старый 05.09.2015, 09:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

sergey144010,
да
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите как вызвать функцию jQuery по клику checkbox shurek Общие вопросы Javascript 4 26.07.2013 15:27
Как на выбраной фотографии при помощи jQuery добавить checkbox? Dmitriy78781 jQuery 1 16.04.2013 15:29
Jquery checkbox checked DimDimos jQuery 12 27.02.2012 21:50
Выделить все checkbox с помощью jquery Alyona jQuery 16 17.01.2012 11:44
checkbox + JS + JQuery Fancybox natariga Общие вопросы Javascript 1 29.05.2011 22:08