2016-05-23 13 views
0

ich habe ein kleines Problem:

Ich habe einen modal, die mit Ajax nach einiger Ergebnis Suche öffnet sich: es öffnet sich und zeigt alle korrekt Ergebnisse angefordert.

Auf der Nähe, ich brauche noch einen div mit der ID „Ergebnisse“ leeren, leeren einen Eingang mit der ID „suchen“ und konzentrieren sich auf sie:

  • leer „Ergebnisse“
  • arbeitet Änderungswert von "Suche" auf "" arbeitet auch
  • Fokus auf "suchen" nicht funktioniert

Hier ist mein HTML:

<div class="col-sm-3"> 
    <form action="" method="post" id="searchit"> 
     <div class="input-group mar-btm"> 
     <span class="input-group-addon"><i class="fa fa-search fa-lg"></i> Ricerca:</span> 
     <input type="text" id="search" tabindex="1" class="form-control" name="search" placeholder="Codice, EAN o Testo" /> 
     </div> 
    </form> 
</div> 
<div class="col-sm-4" id="results"></div> 

UPDATE: jQuery:

$(".modal").on('hidden.bs.modal', function() { 
    $("#results").empty(); 
    $("#search").val(''); 
    $("#search").focus(); 
}); 

ich auch versucht:

$(".modal").on('hidden.bs.modal', function() { 
    $("#results").empty(); 
    $("#search").val('').focus(); 
}); 

und (ist die einzige Texteingabe auf dieser Seite):

$(".modal").on('hidden.bs.modal', function() { 
    $("#results").empty(); 
    $("#search").val(''); 
    $('input[type="text"]').focus(); 
}); 

In jedem Fall, leer() und val() funktionieren ordnungsgemäß, aber nichts arbeitet mit Fokus()! Kein Fehler in der Konsole ...

Ich kann nicht herausfinden, was ich vermisse/falsch mache!

Einige Hilfe? Danke im Voraus!

+0

Versuchen Sie '$ (" # searc ") [0] .focus();' –

+2

'$ (" # searc "). Val ('');' - Die ID Ihres Feldes ist 'search', nicht "Suche". –

+0

Ich bin mir nicht sicher, ob ich die Probleme mit dieser Frage sehe, die mir einen Downvote einbringen; Es ist ziemlich klar. – Pointy

Antwort

1

Probleme mit dem Versuch, .focus() in einem Ereignishandler zu verwenden, stammen normalerweise aus dem Ereignis, das behandelt wird auch mit einem Einfluss auf Fokus. Um das zu umgehen, dass ich wickeln in der Regel nur die .focus() Anruf in einem Timeout:

$(".modal").on('hidden.bs.modal', function() { 
    $("#results").empty(); 
    $("#searc").val(''); 
    setTimeout(function() { 
     $("#searc").focus(); 
    }, 10); 
}); 

Die Timeout-Handler läuft grundsätzlich sofort nach, was auch immer der Event-Handler ausgelöst alles fertig ist.

+0

Wie Herr Crowder angemerkt hat, stellen Sie sicher, dass der von Ihnen verwendete ID-Wert mit dem im HTML-Code übereinstimmt. – Pointy

+0

Definitiv die richtige Antwort, jetzt funktioniert es richtig! Netter Weg, danke! –