2012-04-03 2 views
1

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

<input type="checkbox" class="rambo" value='1' /> 45 
<input type="checkbox" class="rambo" value='2' /> 56 
<input type="checkbox" class="rambo" value='3' /> 56 

поэтому я нужна функция, которая дает мне это с помощью JQuery

спасибо за совет

+0

Если отключить другие галочки, как вы проверить их снова? Вы должны использовать переключатель для этого варианта использования. – ShankarSangoli

+0

@ShankarSangoli, сняв флажок. По крайней мере, это то, что я принял в своем ответе ниже. –

+0

Почему бы не использовать '' вместо флажка? – Martin

ответ

6

Для такого рода функциональности вы должны изучить использование radio buttons. Они лучше всего подходят для взаимоисключающих опций по сравнению с флажками.

Однако, если вам нужно использовать флажки, вы можете использовать следующее:

$(function(){ 
    $(".rambo").change(function(){ 
     $(this).siblings().attr("disabled", $(this).is(":checked")); 
    }); 
});​ 

http://jsfiddle.net/Curt/qGbtQ/1/


А вот решение, которое будет снять все, кроме выбранного (подобно радио-кнопка)

​$(function(){ 
    $(".rambo").change(function(){ 
     $(this).siblings().attr("checked", false); 
    }); 
});​ 

http://jsfiddle.net/Curt/qGbtQ/

+0

Это не то, что ожидал OP. – ShankarSangoli

+0

@ShankarSangoli Какой браузер? – Curt

+0

Я имел в виду, как ожидалось, когда вы нажмете на любой флажок, другие должны отключиться. – ShankarSangoli

1

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

$('.rambo').click(function() { 
    if ($(this).attr('checked')) { 
     $(this).siblings().attr('disabled','disabled'); 
    } else { 
     $(this).siblings().removeAttr('disabled'); 
    } 
}​​);​ 

Как вы можете видеть на this jsfiddle

2

Попробуйте это:

$(".rambo").change(function() { 
    var $el = $(this); 
    if ($el.is(":checked")) { 
     $el.siblings().prop("disabled",true); 
    } 
    else { 
     $el.siblings().prop("disabled",false); 
    } 
}); 

Example fiddle

+0

Просто любопытно, почему вы установили $ (this) в новый var? –

+2

Кэш-объект '$ (this)'. Извлечение его из памяти происходит намного быстрее, чем запрос jQuery для создания нового экземпляра и переноса объекта. Всякий раз, когда вам нужно более одного '$ (this)' в функции, кешируйте его. –

+0

спасибо, Рори тоже это прекрасно – Simon

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