Estoy tratando de hacer mi propio clon de bash pirata en JS y PHP, pero tengo un problema. Al intentar ejecutar este script, el registro de errores me dice que el comando Entered() no está definido, aunque puede verlo encima del formulario.
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> $(function(){ if($(".command") !== null){ function enteredCommand(){ } } else{ // do nothing } }); </script> <form id="commandField" onsubmit="return enteredCommand();"> <p>bbash~ User:</p> <input class="command" type=text> </form>¡Por favor ayuda! Soy nuevo. Esto no es un duplicado, ya que no veo cómo no se puede definir. Y sí, la consola especifica que el error ocurre en "onsubmit".
Es porque ha definido la enteredCommand() fuera del alcance de la invocación onsubmit .
Debe invertir la lógica para que la condición if esté dentro de la función de enteredCommand() . También tenga en cuenta el uso de un controlador de eventos discreto en el código JS. Agregar atributos onX a HTML ya no es una buena práctica y debe evitarse.
Finalmente, para recuperar un valor de un objeto jQuery, debe llamar a val() . Comparar un objeto jQuery con null nunca será cierto, ya que un objeto jQuery nunca es nulo.
let execCommand = c => { console.log(`User entered '${c}', handle it here...`); } $(function() { let $command = $('.command'); $('#commandForm').on('submit', e => { e.preventDefault(); // stop the form submission so you can handle it manually let command = $command.val().trim(); if (command) execCommand(command); }); }); <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <form id="commandForm"> <p>bbash~ User:</p> <input class="command" type="text" /> </form>