Me he quedado atascado tratando de crear un botón de envío que se activa/desactiva automáticamente cuando el usuario escribe en un cuadro de entrada. Pude crear con éxito un botón de envío que comienza deshabilitado y luego se habilita cuando un usuario comienza a escribir, pero quiero que el botón se deshabilite si el usuario ingresa un número o cualquier otra cosa, excepto un carácter o una cadena.
Aquí está el código que tengo actualmente para mi script:
$(document).ready(function() { $('#seed').on('keyup', function(){ var regEx = /^[a-zA-Z\s]*$/; if($(this).val() != regEx) { $('#submit').prop('disabled', false); } else { $('#submit').prop('disabled', true); } }); });
Junto con mi archivo de índice principal con mi formulario:
<head> <title>Story Ideas</title> <link type="text/css" rel="stylesheet" href="style.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script defer src="js/script.js"></script> </head> <div class="form-style"> <form class="form" name="form" method="post" action="?v=ture"> <label for="table">Select Your Story</label> <br /> <select name="table" id="table"> <option value="moons">Moons</option> <option value="lionbird">Lionbird</option> <option value="chik">Chik</option> </select> <br> <input type="text" id="seed" name="seed"> <br> <input id="submit" type="submit" disabled="disabled"> </form> </div> <?php include_once('includes/functions.php'); if (isset($_GET['v']) && $_GET['v'] == true) { $t = $_POST['seed']; $table = $_POST['table']; echo genPoem($t, $table); echo "<br>"; echo "<br>"; } ?> </body>
Intenté usar var regEx = /^[a-zA-Z\s]*$/; Para prevenir esto. ¿Me he perdido algo?
Puede probar $(this).val().match(regEx)
en lugar de usar !=
, como se documenta en https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions .
No está utilizando la condición correcta para verificar si su valor coincide con la expresión regular o no, su expresión regular está bien, simplemente cambie if($(this).val() != regEx)
por if(regEx.test($(this).val()))
.
Referencia para el método de test
: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test