2010-12-09 4 views
0

J'ai une colonne dans un jqgrid définie comme un nombre. L'utilisateur est obligé d'entrer un nombre comme 6.5 avec le délimiteur de virgule étant un point. Cette grille est également utilisée par les personnes de langue allemande qui sont utilisées pour insérer des nombres comme celui-ci 6,5 en utilisant la virgule comme délimiteur.jqgrid - comment contourner la vérification des numéros

Ce gens sont bouleversés quand ils ne sont pas autorisés à insérer 6,5 au lieu de 6,5: D

Pour leur (et à la fin) ma vie plus pratique, je suis à la recherche d'un moyen de convertir automatiquement le 6,5 à 6,5. Cela devrait être fait du côté client, puisque je veux me fier à la vérification jqgrid num.

Ainsi je devrais vérifier (et peut-être transformer) le nombre avant que jqgrid le vérifie. Est-ce possible?

--edit--

Aucune de ces fonctions sont appelées, à l'exception de la première. Une idée de pourquoi cela pourrait être la raison?

afterInsertRow:function (rowid, aData){ 
       alert('fire'); 

      }, 
    beforeSaveCell : function(rowid,celname,value,iRow,iCol){ 
       alert('no fire'); 
       return "new value"; 

     }, 
    beforeSubmitCell : function(rowid,celname,value,iRow,iCol){ 
       alert('no fire2'); 
       return "new value"; 

     }, 
    beforeEditCell : function(rowid,celname,value,iRow,iCol){ 
       alert('no fire3'); 
       return "new value"; 

     }, 

--edit2--

C'est le code que je utilise pour l'édition en ligne.

onSelectRow: function(row_id){ 
if(row_id != null) { 
    var date_str = jQuery('#grid').getCell(row_id, 'date_str'); 
    //var sum = jQuery('#grid').getCell(row_id, 'sum'); 
    var description = jQuery('#grid').getCell(row_id, 'description'); 
    if(date_str != "Total"){ 
     if(row_id !== last_selected_row) { 
      if(row_id == -99){ 
       //thats the first click of the user after initial load of the grid 
       jQuery('#grid').jqGrid('saveRow',row_id) 
        .editRow(row_id, true,true,reload); 
       last_selected_row = row_id; 
         } 
      else{ 
       //after user jumps from one cell to another using the mouse 
       jQuery('#grid').jqGrid('saveRow',last_selected_row,reload); 
       jQuery('#grid').jqGrid('restoreRow',last_selected_row); 
       last_selected_row = row_id; 
      } 
     } else { 
      jQuery('#grid').jqGrid('saveRow',row_id) 
       .editRow(row_id, true,true,reload); 
      last_selected_row=row_id; 
        } 
      } 
     } 

},

+0

Pourriez-vous effacer ** où ** l'utilisateur entre un nombre? Voulez-vous dire chercher (lequel), former/inline/cell edditing, ajouter une nouvelle ligne ou autre chose? – Oleg

+0

lorsqu'un utilisateur entre un nombre dans une cellule. -> donc édition de cellules –

Répondre

1

Si vous utilisez l'édition cellulaire, vous pouvez essayer d'écrire votre gestionnaire d'événements beforeSaveCell qui font le remplacement de texte que vous avez besoin.

MISE À JOUR: Je ne sais pas quelles informations peuvent être placés dans la cellule, mais sans doute l'utilisation de Masked Input Plugin (voir réponse ancienne here) ou tout simplement le filtrage « keypress » (voir another answer) pourrait améliorer l'expérience utilisateur.

+0

Merci, je pense que c'est ce que je cherchais. Mais pour une raison quelconque, cet événement ne se déclenche pas. Voir l'extrait que j'ai inséré dans ma question sur la façon dont j'ai utilisé la méthode. –

+0

@ Tom Tom: Vous avez publié seulement de petits fragments de code, mais il n'est pas clair si vous utilisez les fonctions au bon endroit et si vous utilisez d'autres paramètres importants de jqGrid. Donc, si un code ne fonctionne pas, vous devriez afficher un code ** complet ** qui peut être utilisé pour reproduire le problème. Ensuite, moi ou quelqu'un d'autre pourrait reproduire le problème et le réparer. – Oleg

+0

http://pastebin.com/9ayXw1v5 .. Vous avez raison. J'ai créé un pastebin avec le code complet, car il est si long .. –

Questions connexes