Tengo la siguiente línea de formulario:

<input class="form_input" type="text" id="Fname" placeholder="First Name" minlength="2" maxlength="30" onkeyup="restrict('name')"/>

Y el código JavaScript asociado:

function restrict(elem) {
    var tf = $('#' + elem)
    var rx = new RegExp()
    if (elem === 'email') {
        rx = /[^a-z0-9@_.-]/gi
    } else if (elem === 'username') {
        rx = /[^a-z0-9]/gi
    } else if (elem === 'phone') {
        rx = /[0-9()-]/gi
    } else if (elem === 'address') {
        rx = /[^a-z0-9_.,-]/gi
    } else if (elem === 'city') {
        rx = /[^a-z.-]/gi
    } else if (elem === 'name') {
        rx = /[^a-z.-]/gi
    }
    tf.val(tf.val().replace(rx, ''))
}

Cuando intento ejecutar el código, aparece el siguiente error y parece que no puedo entender por qué después de revisarlo muchas veces ...

TypeError: tf.val(...) is undefined

Sin embargo, todo está definido, así que estoy realmente perpleja.

¡Gracias por cualquier ayuda! :)

0
danny26b 5 jun. 2020 a las 04:07

3 respuestas

La mejor respuesta

id="Fname" ... onkeyup="restrict('name')"

function restrict(elem) {
    var tf = $('#' + elem)

No hay ningún elemento con ID name.


Le sugiero que también mire el atributo pattern en su entrada para la validación: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes

2
Chase 5 jun. 2020 a las 01:10

Su entrada tiene una identificación de "Fname", no "name". Cambie su identificación a nombre para solucionar el problema.

<input class="form_input" type="text" id="name" placeholder="First Name" minlength="2" maxlength="30" onkeyup="restrict('name')"/>
0
hev1 5 jun. 2020 a las 01:14

Debe llamar a la función como restrict(this.id)

0
Sybghatallah Marwat 5 jun. 2020 a las 01:23