2015-03-01 4 views
1

У меня есть проблемы с JavaScript, в моем HTML код:Отключить функции в Javascript события DOM

<input onclick="myFunction();" /> 

<script> 
function myFunction(){ 
//excecution of this fucntion 
} 
</script> 

После нажатия кнопки ввода, функция работает. Но я хочу, чтобы myFunction был отключен после первого щелчка, поэтому, когда я снова нажимаю, myFunction не будет работать.

+0

проход '' this' в myFunction' и в конце этого 'this.disabled = правда,' –

ответ

1

Одним из способов является, чтобы установить его на пустой функции, после того, как код выполняется.

function myFunction(){ 
    //(..) Some code 
    myfunction = function(){}; // empty the function so nothing happens next time 
} 
+0

, если я сделаю этот код, я не смогу снова активировать myFucntion .. –

+2

@VinraGunantaPandia yes. Это то, что вы хотите? –

+0

не совсем, но иногда я его снова активировал –

2

Просто удалите атрибут

<input onclick="myFunction(this);" /> 

<script> 
function myFunction(elem){ 
    // code here 
    elem.removeAttribute('onclick') 
} 
</script> 

или даже лучше слушателей использовать событие

<input id="myInput" /> 

<script> 
    document.getElementById('myInput').addEventListener('click', myFunction, false); 

    function myFunction(elem){ 
     // code here 
     this.removeEventListener('click', myFunction); 
    } 
</script> 
+1

Я бы не удалить атрибут (даже не уверен, работает ли это), но сделать 'this.onclick = null' – Bergi

+0

@Bergi - Удаление атрибута работает очень хорошо во всех браузерах, оно автоматически также удаляет свойство, поскольку атрибуты inline 'on ...' сопоставляются с этим свойством. Конечно, использование 'addEventListener' намного проще, на мой взгляд, – adeneo

+0

Да,' addEventListener' должен быть предпочтительным, +1 – Bergi

1

Если вы используете JQuery (как вы включили его в тегах), я бы с .one():

<input type="txt" class="my-input" /> 


function activateClick(){ 
    // single click: 
    $('.my-input').one('click', function(){ 
     // do stuff ... 
    }); 
} 

// Activate single click on input element 
// Can be reactivated later on, using the same function (see DEMO): 
activateClick(); 

DEMO

0

Используйте логический индикатор, чтобы определить, была ли эта функция уже запущена или нет. Преимущество этого метода заключается в том, что с легкостью восстановить статус функции на более поздний срок.

<!DOCTYPE html> 
<html> 
<body> 
<button onclick='func();'>Function</button> 
</body> 
<script> 
var funcActive=true; 
function func() { 
if (funcActive) { 
funcActive=false; 
alert('func ran'); 
} 
} 
</script> 
</html> 
Смежные вопросы