Rozwiązuję problem z domyślnym przyciskiem Wyślij w IE7. Po naciśnięciu klawisza "Enter" w polu wprowadzania, kliknięto niektórych przycisku na stronie. Więc znalazłem rozwiązanie tego:

 $(document).bind("keypress", function(ev) {
     ev.keyCode == 13 && ev.preventDefault();  
 });

Ale jest problem z tym kodem: Tag Textarea Nie otrzymuj "nowej linii". Próbowałem tego:

 $(document).bind("keypress", function(ev) {
     if (ev.keyCode == 13 && ev.target.type != "textarea")
         ev.preventDefault();  
 });

Działa, ale wygląda na brudne. Pytanie brzmi: Czy możesz poradzić lepiej rozwiązanie problemu?

Z góry dziękuję.

1
Dmitry Poroh 28 sierpień 2012, 10:28

3 odpowiedzi

Najlepsza odpowiedź

Jeśli ma po prostu zapobiec zgłoszeniu formularza na stronie Wprowadź naciśnięcie klawisza, przetestuj na bryzżie, gdy formularz próbuje wysłać ...

$(your_form).submit(function(ev){
    if (ev.keyCode == 13){
        // Prevent form submission behaviors if the event was fired by enter keypress
        ev.preventDefault();return false;
    }
    // And code for form submission here, or just keep the return true to make it behave normally.
    return true;
});
5
Dmitry Poroh 28 sierpień 2012, 07:09

To nie jest brudne. Ale jeśli chcesz jednej linii, nadal możesz zrobić z:

ev.keyCode == 13 && ev.target.type != "textarea" && ev.preventDefault();  
0
xdazz 28 sierpień 2012, 06:31

Bardziej elegancki rozwiązanie byłoby użycie Dostęp do przesyłania jQuery i zwrócić fałszywe:

$('#myForm').submit(function(ev){
  // custom form handling code here

  return false;// prevent browser default form submission
});

Alternatywnie, można również zadzwonić .preventDefault() na obiekcie zdarzeń, przekazano do przewodnika Wyślij.

0
Russ 28 sierpień 2012, 06:48