2010-10-26 9 views
1

Je voudrais pouvoir invoquer le bouton de recherche dans la boîte de dialogue de recherche lorsque la touche "Entrée/Retour" est pressée. Malheureusement, l'option 'savekey' ne soumet pas le formulaire de la même manière que dans l'édition et ajoute l'édition de formulaire.jqGrid navGrid search soumettre sur Enter keypress ne fonctionne pas

Voici un extrait du code que j'utilise.

$("#list").jqGrid('navGrid', '#pager', 
    {edit: true, add: true, del: true, search: true, view: true}, 

    ... 

    { 
     caption: "Search", 
     closeAfterSearch: true, 
     closeOnEscape: true, 
     sopt: ['cn','eq'], 
     savekey: [true, 13] 
    }, 

Voici un lien vers la documentation form_editing J'ai consulté:

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:form_editing&s[]=savekey

Voici un lien vers le champ unique de documentation de recherche:

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:singe_searching&s[]=navgrid

je peux » Je ne trouve rien qui puisse suggérer que cette fonctionnalité existe, mais j'ai l'air d'être une évidence. Comme toujours, toute aide ou direction est grandement appréciée.

+0

J'ai trouvé la solution qui a fonctionné pour moi sur http://stackoverflow.com/questions/9655775/how-to-enable-enter-in-jqgrid-advanced-search-window –

Répondre

2

Il me semble que le problème cam être résolu si vous remplacez l'option savekey: [true, 13] qui fonctionne vraiment pas pour la recherche sur les points suivants beforeShowSearch et onClose événement poignée

beforeShowSearch: function(form){ 
    form.keydown(function(e) { 
     if (e.which == 13) { 
      $(".ui-search", form).click(); 
     } 
    }); 
}, 
onClose: function(form){ 
    form.unbind('keydown'); 
} 

Cette méthode ne fonctionnera pas seulement pour le single field searching mais pour advance searching également.

Si vous voulez que la touche 'Entrée' ne fonctionne que dans les champs de saisie, vous pouvez remplacer form.keydown par $('.vdata',form).keydown et apporter les modifications correspondantes dans unbind.

+0

Cela a du sens. Je vais devoir essayer. Merci pour l'aide. – gurun8

+0

A travaillé comme un rêve. – gurun8

0

Cela a été très utile, mais je suis la solution fournie ne fonctionne pas tout à fait pour moi. J'ai modifié le code fourni et cela marche quelque peu maintenant, mais il ne semble pas que je soumette les données correctes. Chaque fois que j'appuie sur la touche Entrée, un "0" apparaît dans la boîte de saisie au lieu de tout ce que j'ai réellement ajouté. Pour une raison quelconque, il ne publie pas searchString. Le code que j'utilise est:

beforeShowSearch: function(form){ 
    $(form).keydown(function(e) { 
    if (e.keyCode == 13) { 
     $("#fbox_cust_grid_search").click(); 
    } 
    }); 
}, 
onClose: function(form){ 
    $(form).unbind('keydown'); 
} 

Est-ce que l'un d'entre vous a une suggestion quant à ce qui pourrait se passer ici?

Editer: Intéressant, quand je alerte quelque chose (quelque chose) juste avant la méthode .click(), les données sont affichées parfaitement. Des idées?

+0

Je suis confronté au même problème.La première fois que je clique sur "entrer", la requête est soumise avec 'searchString' vide et' _search' = 'true', quand je le fais une seconde fois il soumet les bonnes données. Cela arrive aussi en utilisant 'searchOnEnter' –

+0

Est-ce que quelqu'un a trouvé une solution? J'ai le même problème. – CoffeeIsProgramming

1

J'ai eu le même problème sur FireFox mais la solution ci-dessus a bien fonctionné dans IE. Afin de le faire fonctionner sur Firefox, j'ai dû utiliser la fonction de mise au point au lieu de cliquer comme ci-dessous:

beforeShowSearch: function (form) { 
         form.keydown(function (e) { 
          if (e.which == 13) { 
           $("#fbox_list_search").focus(); 
          } 
         }); 
        }, 
0

Essayez le code suivant. Fonctionne pour moi:

beforeShowSearch: function(form){ 
    $(form).keydown(function(e) { 
     if (e.keyCode == 13) { 
     setTimeout(function() { 
      $("#fbox_cust_grid_search").click(); 
     }, 200); 
     } 
    }); 
    return true; 
}, 
onClose: function(form){ 
    $("#fbox_cust_grid_search").unbind('keydown'); 
} 

Il semble y avoir un problème lorsque la méthode de clic est appelée trop rapidement. Donner à la grille 200ms pour faire ce qu'elle doit faire avant de chercher semble faire l'affaire.