Frage

Ich habe folgenden Code-Snippet:

$('#messages input').live('keydown', function(e){
  if(e.keyCode == 13) {
    alert($(this).attr('value'));
    e.preventDefault();
    return false;
  }
});

, wobei „#message Eingang“ ist offensichtlich eine Gruppe von Eingangstextelementen. Ich mag die „Enter“ -Taste fangen und zu verhindern, dass es die Seite zu aktualisieren. Sie vermag jedoch nicht jedes Mal. Der Alarm funktioniert gut, aber es scheint, dass der prevent () funktioniert nicht.

Wer irgendwelche Ideen?

Edit: Ich habe zu erwähnen, dass ich in ASP.NET bin zu arbeiten, und es ist in einem Formularelement. Entfernen aus dem Formelement löst das Problem, aber ich würde gerne wissen, warum prevent () funktioniert nicht.

War es hilfreich?

Lösung 2

Ironischerweise war es die Warnung selbst, die das Problem verursacht wurde.

AFAICT, die Warnung der JavaScript-Ausführung vor dem prevent würde stoppen () wirksam werden könnte, aber der Browser weiterhin die Tasten Verarbeitung, ein Formular Vorlage ausgelöst wird.

Schräge, aber dort haben Sie es.

Andere Tipps

Könnte ein

versuchen
e.stopPropagation()
$('#form_deal_step1').live('submit',function(){
        $('.column .column_child select').not(':hidden').each(function(ev){
             if($(this).val()=='?')
             {
                 alert('Please select the ages of each child.');
                 ev.preventDefault();
                 return false;
             }
          });
})
var age_selected=1;
$('.column .column_child select').not(':hidden').each(function(){
    if($(this).val()=='?')
    {                
        age_selected=0; 
    }
});
if(age_selected==0)
{
    alert('Please select the ages of each child.');
    return false;
}

ich denke, Formulare auf keypress abgegeben, nicht auf keydown. Versuchen

$('#messages input').live('keypress', function(e){
  if(e.keyCode == 13) {
    alert($(this).attr('value'));
    e.preventDefault();
    return false;
  }
});

Soweit ich bin mir bewusst, die Aktualisierung der Seite ist eine Standardfunktion der Form nicht die Eingabe-Taste und als solche Sie Standard verhindert auf dem Formular werden sollte, anstatt die Eingabe.

Etwas entlang der Linien von:

$('#target').submit(function() {
  return false;
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top