2013-01-19 13 views
10

mam ten kod:jQuery .keyup() nie działa

<script> 
$('#searchInput').keyup(function() { 
alert('Handler for .keyup() called.'); 
}); 
</script> 

i to wejście:

<input id='searchInput' type='text' placeholder='Search other alumni users' /> 

ale po naciśnięciu klawisza alert nie wyjdzie ... I zawiera już skrypt jQuery.

Odpowiedz

28

Zmień swój kod do

$(function(){ // this will be called when the DOM is ready 
    $('#searchInput').keyup(function() { 
    alert('Handler for .keyup() called.'); 
    }); 
}); 

aby zapewnić element DOM istnieje podczas budowania zestawu jQuery.

+0

thanx ... Jesteście niesamowici ... To zadziałało. :) – omerjerk

+0

Omg, bardzo ci za to dziękuję. Wyciągałem włosy, próbując zrozumieć, dlaczego mój kod się nie uruchamia. DZIĘKUJĘ CI! – Stellaire

6
$(document).ready(function() { 
    $('#searchInput').keyup(function() { 
    alert('Handler for .keyup() called.'); 
    }); 
}); 

Albo

$(function() { 
    $('#searchInput').keyup(function() { 
    alert('Handler for .keyup() called.'); 
    }); 
}); 
0

Ten pracował dla mnie:




    jQuery(".divForinput1 > input").keyup(function() { 
    var value = $(this).val(); 
    jQuery(".divForinput2 > input").val(value); 
    }).keyup(); 

//the .keyup on the end maybe what many are missing 

1

keyup/keydown wydają się tylko pracy na elementach, które są obecne w document.ready.

Jeśli wyzwalasz wydarzenie z elementów, które zostały zmienione lub wstawione po pageload, zdarzenia te nie zostaną uruchomione.

Wyszukiwanie lub tworzenie elementu nadrzędnego elementu, który ma być oglądany, który jest obecny podczas ładowania, ustawienie zdarzenia, które ma być wyzwalane z tego elementu nadrzędnego, może go ominąć.

0

W moim przypadku miałem wiele funkcji w ramach $(document).ready(function() {});

Zmieniając kolejność moich funkcji keyUp tj umieszczając je na szczycie ... w ciągu dokument gotowy wydawało się rade. Zgaduję, że jedną z innych funkcji było łamanie funkcji kluczowania w jakimkolwiek celu?