He examinado muchas preguntas similares, pero quizás no entiendo cómo llamar a mi función.

Mi objetivo es permitir que el usuario escriba en el campo del formulario y presione enter para enviar.

Actualmente, si alguien ingresa un valor en el formulario, no hace nada si hace clic en ingresar. Para ejecutar tienen que hacer clic en el botón Buscar inventario.

Mi formulario de búsqueda simplificado ... hay muchos campos, todos con una clase de jquerydata. La clase Inventory_search_db_connect está vinculada a una función jQuery que reúne todo con jquerydata como clase y hace lo suyo.

<form method="post"  action="" name="form3" id="form3">
<input type=text name="title" size=25 value="" class="jquerydata">
<input type=button class="inventory_search_db_connect" value="   Search Inventory" class="jquerydata">
</form>

El javascript / jQuery

$(document).ready(function () {
pageBinds.db_actions();
SearchBinds.search_actions();
});


var pageBinds = {

db_actions: function() {
var that = this;
 $('.inventory_functions_db_connect').on(
      'click', function(event){


          var query= $(this).closest('.parent').find('.jquerydata').serialize();

....does stuff here
  );
},
unbind: function() {
$('.inventory_functions_db_connect').off();
this.db_actions();
}

}

Intenté varias cosas, la que pensé que podría funcionar era

$(document).ready(function() {

$('#form3').on("submit", function() {
    this.db_actions();
});
});

En la etiqueta del formulario agregué

<form method="post"  action="" name="form3" id="form3" onsubmit="return false">

Como estoy aquí, esto obviamente no funcionó.

Hay muchas otras soluciones, pero no pude descifrar cómo llamar a la función que quiero.

Gracias de antemano por cualquier idea ... Mike

0
Mike Carville GleTech 13 may. 2016 a las 17:07

3 respuestas

La mejor respuesta

Gracias por las respuestas @ Alan Wagner me guió en la dirección correcta.

Terminé agregando un botón de envío oculto, con una clase que es igual al botón en el que se hace clic para enviar. Esto está ligado a la función.

<input type="submit" class="inventory_search_db_connect" style="display: none;">

Luego en la función agregué

event.preventDefault();

Para detener el envío automático

Gracias, espero que esto finalmente ayude a alguien más Mike

0
Mike Carville GleTech 13 may. 2016 a las 16:35

En el html, elimine el onsubmit = "return false" porque impide ejecutar ese

$('#form3').on("submit", function() {
   this.db_actions();
});

Luego, en el JS, debe evitar el envío automático llamando preventDefault ():

$('#form3').on("submit", function(e) {
    e.preventDefault();
    this.db_actions();
 });

Editar:

this.db_actions(); 

No funcionará porque este es el elemento DOM

$('#form3').on("submit", function() {
   pageBinds.db_actions();
});

Hazme saber si esto funciona ;)

1
Alan Wagner 13 may. 2016 a las 14:25

Pruebe esto :

$('input').keypress(function(e) { 
if (e.which = 13) 
{ 
this.db_actions();
}
});

O

$('input').keydown(function (e) {
    if (e.keyCode == 13) {
        this.db_actions();
    }
});

O

$("input").keypress(function (e) {
    if (e.which == 13) {
        e.preventDefault();
        $("form").submit();
    }
});
0
Wasif Shahjahan 13 may. 2016 a las 14:24