J'ai une zone de saisie où une valeur a été prédéfinie. Je voudrais faire en sorte qu'au chargement de la page, le bouton "Entrée" soit pressé sur le clavier pour soumettre la valeur.

Voici le code:

$('#login-input').keypress(function(e) {
      if (e.which === 13 && $(this).val() != '') {
        player_name = $(this).val();
        logged = 1;
      }
<div id="console_content">
  <label>Username:</label><input maxlength="10" class="textarea" id="login-input" autocomplete="off" value="Anonymous" type="text">
</div>

Une solution où je n'aurais pas besoin d'appuyer sur Entrée et la valeur est soumise est également la bienvenue!

3
Joe 5 nov. 2019 à 04:50

2 réponses

Ou vous pouvez appeler le gestionnaire d'événements avec une touche fausse comme celle-ci:

function kpress(e) {
 if (e.which === 13 && $(this).val() != '') {
  player_name = $(this).val();
  logged = 1;
  console.log(player_name,logged);
 }
}

kpress.call($('#login-input').keypress(kpress),{which:13});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="console_content">
  <label>Username:</label><input maxlength="10" class="textarea" id="login-input" autocomplete="off" value="Anonymous" type="text">
</div>

J'utilise la sortie de la liaison d'événement jQuery comme contexte d'objet pour la méthode Function.prototype.call() et j'ajoute un objet d'événement "simplifié" comme {which:13}.

0
cars10m 5 nov. 2019 à 07:09

Si vous souhaitez qu'il s'exécute après le chargement de la page, utilisez l'événement onload. La solution peut ressembler à ceci:

 <script>
  function f() {
    // Test it:
    // alert("Hello, page loaded!"); 
    player_name = $('.some_place').val();
    logged = 1;
  }
 </script>
 <body onload="f()">

Si vous souhaitez que l'utilisateur ait un aperçu de votre formulaire de connexion pré-rempli et informe de ce qui se passe, vous pouvez retarder la fonction setTimeout, qui se déclenchera en 0,5 seconde après l'événement onload. .

 <script>
  function f() {
    $('#some_element').text('Signing you in...');
    player_name = $('.some_place').val();
    logged = 1;
  }
 </script>
 <body onload="setTimeout(f, 500)">
0
Alex Khimich 5 nov. 2019 à 06:38