Hé donc maintenant j'ai le code ci-dessous qui fonctionne comme une recherche Ctrl + F mais dans une boîte de recherche. Le site Web qui l'utilise n'a qu'une seule zone de code, j'ai donc besoin que le code fonctionne dans la même zone.

Le code ci-dessous fait ce que je veux qu'il fasse, mais en ce moment, nous devons cliquer sur le bouton de recherche la première fois, puis nous pouvons poursuivre avec enter après cela. Ce que je veux, c'est permettre d'accepter la touche entrée dès le départ et en même temps avoir le bouton en option.

Est-ce possible?

<!--BEGIN SEARCH BOX -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script> 
<div class="search_box">
<div><input id="search" type="textarea" /> <input id="submit_form" onclick="checkInput()" type="button" value="Sök" /></div>

<div>&nbsp;</div>

<div>
<p>2019-11-11 - 2020-01-10 - Testing line 837<br />
<a href="">PDF</a></p>

<p>2019-11-04 - 2019-11-24 - Testing 2, line 607, 627, 697<br />
<a href="">PDF</a></p>

<p>2019-10-30 - 2019-11-29 - Testing 3, line 55, 75, 291<br />
<a href="">PDF</a></p>

<p>2019-10-31 - 2019-11-04 - Testing 4, line 423,424<br />
<a href="">PDF</a></p>
</div>
</div>
<!--END SEARCH BOX --><script>
    function checkInput() {
        var query = document.getElementById('search').value;
        window.find(query);
        return true;
    }                           
</script>
0
Robert 8 nov. 2019 à 13:51

3 réponses

Meilleure réponse

Vous avez indiqué que vous ne pouvez pas utiliser de balise form en raison de restrictions sur votre système d'hébergement. J'ose dire que votre entreprise peut avoir besoin d'examiner cela, mais une solution de contournement peut être d'attraper la touche Enter sur votre entrée, comme décrit ici: exécuter la fonction sur la touche Entrée

Dans votre cas, cela pourrait ressembler à ceci:

var searchbox = document.getElementById("search");
searchbox.addEventListener("keydown", function (e) {
    if (e.keyCode === 13) {  //checks whether the pressed key is "Enter"
        checkInput();
    }
});
0
Thomas Timbul 8 nov. 2019 à 12:35

Si j'utilise seulement ce qui suit, cela fonctionne même si j'ai mis return sur true ou false. Cela fonctionne presque parfaitement, si je tape quoi que ce soit dans la case, je dois cliquer sur le bouton la première fois et puis continuer en cliquant sur Entrée sur mon clavier et cela continue la recherche en descendant. Je dois juste cliquer sur le bouton la première fois et c'est ce qui m'agace: /

<div><input id="search" type="text" /> <input id="submit_form" onclick="checkInput()" type="button" value="Sök" /></div>

Le "onclick" est ce que je veux comme onsubmit, je suppose, mais je ne peux pas changer cela en onsubmit couse qui le freinera.

0
Robert 8 nov. 2019 à 12:23

Votre type d'entrée est un textarea, donc appuyer sur Entrée sera interprété comme créant une nouvelle ligne dans cette case. Changez-le en:

<input id="search" type="text" />

Pour un champ de texte d'une seule ligne et Enter soumettra le formulaire. Au fait, vous devriez probablement inclure vos entrées et changer le type de bouton à soumettre:

<form onsubmit="checkInput()">
<input id="search" type="text" /> <input id="submit_form" type="submit" value="Sök" />
</form>
0
Thomas Timbul 8 nov. 2019 à 11:33