2013-08-07 3 views
0

Я могу установить действие при нажатии кнопки html. Но мне нужно установить действие только с помощью FIRST. Есть какой-либо способ сделать это? Кнопка представляет собой радио в форме. Может быть, есть javascript?Html кнопка действие только при первом нажатии

Что важно - переключатель радиопомех все еще может быть изменен. Но действие нужно делать только один раз.

Это не работает

function myfunction(i){ 
oForm = document.forms["myform"]; 
if(oForm.elements["field"+i].checked) 
    alert("action done earlier"); 
else 
    action 
} 
+0

Вы можете использовать логическое или removeEventListener. –

ответ

2

Чистейший решение возможно использовать removeEventListener для ... удалить прослушиватель событий:

var myButton = document.getElementById('someId'); 
var handler = function(){ 
    // doSomething 
    myButton.removeEventListener('click',handler); 
} 
myButton.addEventListener('click', handler); 

(чтобы сделать его чище, вы можете обернуть это в IIFE, как в примере ниже)

Demonstration

0

Если вы preffer JQuery, вы можете использовать JQuery отвязать

$("button").click(function(){ 
    /* some content */ 
    $(this).unbind('click'); 
}); 

Html

<button> Some content </button> 
+3

В этом вопросе нет jQuery. –

+0

OK, извините. Но это работает. – M1K1O

0

Вы можете использовать свойство, чтобы отключить кнопку, как только она была нажата, добавив,

disabled="disabled" 

на кнопку после щелчка по кнопке?

+0

Но я хочу изменить значение. Таким образом, кнопка не может быть отключена. Только одно действие нужно выполнить один раз. – bartektartanus

+1

ОК, так что, я думаю, ответы на Javascript подойдут вам лучше – Marcandria

0

Для решения этой проблемы я использовал jQuery.on, а также jQuery.off - см. Мой код на jsfiddle!

$(document).ready(function() { 
    var button = $('#my-button'); 

    function onClick() { 
     alert('clicked'); 
     button.off('click', onClick); 
    }; 

    button.on('click', onClick); 
}); 

http://jsfiddle.net/VxRyn/

+0

Для этого требуется jQuery, о котором OP не упоминал. –

1

Заканчивать обработчик событий JQuery .one().

$("#my-button").one('click', function() { 
    /* Do something at most once */ 
}); 
Смежные вопросы