2014-09-03 3 views
0

Привет, ребята,Как отключить переключатель в течение фиксированного интервала времени после нажатия на них?

<input type="radio" value="LIKE" onclick="func(this.value)">LIKE 
    <br> 
    <input type="radio" value="OK" onclick="func(this.value)">OK 
    <br> 
    <input type="radio" value="DISLIKE" onclick="func(this.value)">DISLIKE 
    <br> 

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

+1

И ваш попытался код? – senK

ответ

1

Вот пример, как вы могли бы это сделать, если вы не против использования jQuery. Вы можете использовать атрибут HTML disabled, чтобы отключить радиоприемники при их нажатии, а затем использовать setTimeout, чтобы включить их снова через заданное время. Внизу установлено значение 3000 миллисекунд.

$('document').ready(function() { 
    $('input').on('click', function(){ 
     $('input').attr('disabled',true); 

     setTimeout(function() { 
      $('input').attr('disabled',false); 
     }, 3000); 
    });  
}); 

http://jsfiddle.net/0912shz0/1/

+0

Какую цель выполняет jQuery в этом случае? – Ozzy

+0

Как правило, обычно работает с Javascript немного более дружелюбно, когда речь идет о проблемах с кросс-браузером, добавлении прослушивателей событий и т. Д. –

+0

onclick полностью кросс-браузер – Ozzy

0

Что вам нужно это таймер, используя SetTimeout:

https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setTimeout

И в теле функции вам нужно будет знать, как использовать отключил атрибут в JavaScript:

https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Attribute/disabled

И вам не нужно было бы передавать this.value функции, то, что нужно это это - который был бы элемент, который вы хотите отключить, или событие - событие, которое содержит элемент в event.target. Примечание: если вы передадите параметр event, вам нужно будет использовать кросс-браузерный код, чтобы он работал в разных браузерах. Например:

function(event) { 
    //short-hand for: if(event) event=event; else event=window.event; 
    event = event || window.event; 
    // your code here 
} 
1

Вы можете попробовать такой код: -

$('#like, #unlike, #dislike').click(function(){ 
     $("#like, #unlike, #dislike").attr("disabled",true); 

    setTimeout(function(){ 
     $("#like, #unlike, #dislike").attr("disabled",false); 
    },2000); 
}) 

HTML

<input type="radio" value="LIKE" id="like" >LIKE 
<input type="radio" value="OK" id="unlike">OK 
<input type="radio" value="DISLIKE" id="dislike">DISLIKE 

DEMO here (JSFiddle)

+0

Зачем использовать document.getElementById, когда вы завернули его в jQuery и имеете $ (this) для элемента #like? – Ozzy

+0

yeah.code будет идти именно так. Я jst ответил в спешке и смешал Javscpt wid jQuery. Я обновлю свою скрипку :) –

0
$('input[type="radio"]').click(function(){ 
    $(this).attr('disabled', true); 

    setTimeout(function() { 
      $('input[type="radio"]').attr('disabled', false); 
    }, /*time interval in ms*/) 
}); 

не тестировалось, написанный с головы

+0

Вы можете сохранить $ (this) в переменной, например: var varBibn = $ (this); 'а также ваше второе использование этого будет возвращать коллекцию, если на странице имеется несколько переключателей. – Ozzy

+0

да, это правда. Вы можете использовать некоторую дополнительную информацию о классе, ex '$ ('input.someclass')' –

0

Работа для меня

<script> 
    function func(thisValue){ 
     setTimeout(function() { 
      $('input[type=radio]').attr("disabled",true); 
      $('input[type=radio]').removeAttr("checked"); 

      $('input[value='+thisValue+']').attr("disabled",false); 
      $('input[value='+thisValue+']').attr("checked","checked"); 
      $('input[value='+thisValue+']').prop('checked', true); 

     }, 100); 
    } 
    </script> 

HTML

<label onclick="func('LIKE')" style="position:relative"><input type="radio" value="LIKE" >LIKE</label> 
    <label onclick="func('DISLIKE')" style="position:relative"><input type="radio" value="DISLIKE">DISLIKE</label> 
Смежные вопросы