jquery keypress w input

0

mam taki kod

$('#form_login').keypress(function ()
{
  alert('s');
});

HTML:

<form name="register" action="#">
	<label>
		<strong>{$output->lang_login}</strong>:
		<input type="text" name="login" id="form_login" value="" />
		<span id="info_login"></span>
	</label>

i kod js nie nie działa i nie mam pojęcia czemu, próbowałem $('form[name=register] input[name=login]') ale też nic :P

chyba problem tkwi w tym ze formularz pobieram get'tem

$.get(core.APP_WEB_PATH+'index.php/register/main', function(data) {
  $('#content').html(data);
});

ale nie wiem jak sobie z tym poradzić :P

1

problem rozwiązała funkcja live()

1

Uzyj live() lub delegate() zamiast bindowania poprzez keypress().

0

Jeśli już masz wybierać pomiędzy live() a delegate() to zdecydowanie zapomnij o starej live() - już parę razy na forum pisałem. Powstała ona gdy nie było delegate() i ma serię minusów.

0

A jakie to minusy ma funkcja live? Bo mi jakoś działa bezbłędnie

0
  1. jQuery delegate zamiast live
  2. plus ponieważ live() bazuje na bąbelkowaniu w górę, nie masz możliwości zatrzymania zdarzenia poprzez e.stopPropagation()
http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-the-difference-between-live-and-delegate napisał(a)

Most notably, live() bubbles all the way up, and attaches the handler to the document. It also ceases to work well when chaining method calls, unfortunately. Delegate() was introduced in version 1.4, which almost does the same thing, but more efficiently.

  1. etc..
1

Tak naprawdę to mógłbyś użyć zwykłego keypress i wydajnościowo byłoby to prawdopodobnie minimalnie korzystniejsze (ale założę się, że tu tak czy siak zmiana wydajności nie będzie odczuwalna -- możesz wybrać live, delegate lub keypress i różnicy nie będzie).

Wystarczy użyć keypress już po zaktualizowaniu zawartości, o tak:

$.get(core.APP_WEB_PATH+'index.php/register/main', function(data) {
  $('#content').html(data); // zakładam, że w data siedzi element #form_login
  $('#form_login').keypress(function ()
  {
    alert('s');
  });
});

Pytanie tylko: jak Ci wygodniej, jak będzie czytelniej? Jeśli dodawanie obsługi keypressa masz w innym pliku niż kod żądania ajaxowego, to wygodniej pewnie będzie użyć delegate(). Ale jeśli wszystko jest i tak w jednym pliku, to możesz zrobić jak powyżej.

0

bswierczynski keypress mi nie działa, a live tak, żądanie mam w tym samym pliku, ale np. w tooltipie już nie w tym samym pliku.

PS: chociaż może spróbuje tym twoim sposobem keypress, bo chyba zrozumiałem o co chodziło :D

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.