Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqGrid-表单编辑问题_Jqgrid_Form Editing - Fatal编程技术网

jqGrid-表单编辑问题

jqGrid-表单编辑问题,jqgrid,form-editing,Jqgrid,Form Editing,在内联编辑中,在进行编辑之前,它会在内部创建一个数组(savedRow),并用正在编辑的字段的值填充该数组,以便我可以访问该值 我想知道表单编辑中是否有类似的内容,因为我需要在编辑完成之前访问字段的值,以便在数据库中“保存”字段之前进行验证 有人能帮我吗 编辑: 我在这里发布了我的代码的一部分(一个字段的代码),我试图以两种方式进行验证(内联编辑和表单编辑)。对于内联编辑,我使用dataEvents进行验证,然后使用savedRow访问尚未存储的数据。但当我因为使用savedRow而尝试使用表

在内联编辑中,在进行编辑之前,它会在内部创建一个数组(
savedRow
),并用正在编辑的字段的值填充该数组,以便我可以访问该值

我想知道表单编辑中是否有类似的内容,因为我需要在编辑完成之前访问字段的值,以便在数据库中“保存”字段之前进行验证

有人能帮我吗


编辑:

我在这里发布了我的代码的一部分(一个字段的代码),我试图以两种方式进行验证(内联编辑和表单编辑)。对于内联编辑,我使用
dataEvents
进行验证,然后使用
savedRow
访问尚未存储的数据。但当我因为使用savedRow而尝试使用表单编辑时,它显示了一个错误:
未定义savedRow
。在这个字段中,
editrules
符合我的要求,但我不知道是否所有这些字段都会出现这种情况

{ name: 'ac_fd', index: 'ac_fd', width: 50, editable: true,
  formatter: 'number', editrules: { number:true, required:true, minValue: 0.1,
  maxValue: 1.0 }, formatoptions: { decimalPlaces: 1, decimalSeparator: '.'},
     editoptions: {
        dataEvents: [ {
           type: 'blur', fn: function(e) {                        
              var savedrow  = $("#list").getGridParam('savedRow');
              console.log($(this).val());
              if($(this).val() != savedrow[0]['ac_fd']) {         
                 var eid='#' + savedrow[0]['id'] + '_ac_fd';   
                 var val_fd=$(this).val();
                 var fd_min=0.1;
                 var fd_max=1.0;

                 if( isNaN(val_fd) || val_fd > fd_max || val_fd < fd_min) {
                       setTimeout(function(){
                       $(eid).focus().select();
                    },600);


                    $(eid).qtip({
                       content: {
                          text: 'Fator de Demanda deve ser um <b>número</b>
                                 entre <b>' + fd_min.toFixed(1) + '</b> e <b>'
                                 + fd_max.toFixed(1) + '</b>.',
                          title: {
                             text: 'Atenção:',
                             button: true
                          }
                       },
                       show: {
                          event: false,

                          ready: true,

                          effect: function() {
                             $(this).stop(0, 1).fadeIn(400);
                          },

                          delay: 0,
                                                     },
                       hide: {
                          event: false,

                          effect: function(api) {
                             $(this).stop(0, 1).fadeOut(900).queue(function() {
                                 api.destroy();
                             });
                          },
                       },
                       style: {
                          classes: 'qtip-red qtip-rounded trif_tip_err',
                          tip: {
                             width: 10,
                             height:12
                          } 
                       },
                       position: {
                          my: 'bottom left',  
                          at: 'top center',
                       },

                       events: {
                          render: function(event, api) {
                             tip_timer.call(api.elements.tooltip, event);
                          }
                       }
                    });  

                 }       
              }        
           }           
        } ]            
     }                   
  },
{name:'ac_fd',index:'ac_fd',宽度:50,可编辑:true,
格式化程序:“number”,编辑规则:{number:true,必需:true,minValue:0.1,
maxValue:1.0},formatoptions:{decimalPlaces:1,decimalSeparator:'.'},
编辑选项:{
dataEvents:[{
类型:'blur',fn:function(e){
var savedrow=$(“#list”).getGridParam('savedrow');
log($(this.val());
如果($(this.val()!=savedrow[0]['ac_fd']){
var eid='#'+savedrow[0]['id']+''u ac_fd';
var val_fd=$(this.val();
var fd_min=0.1;
var fd_max=1.0;
如果(isNaN(val_fd)| val_fd>fd_max | val_fd

因此,如果
dataEvents
是常见的,并且用于三种形式的编辑,我在哪里可以进行这种类型的验证(也使用qtip,我希望这种验证也用于内联编辑)?

jqGrid在间隔
savedRow
参数中保存编辑行的原因是因为jqGrid在适当的位置修改了编辑行。仅因为内联编辑和单元格编辑使用interval
savedRow
参数。表单编辑在编辑完成之前不修改网格的原始行。因此,表单编辑不使用
savedRow
参数

如果表单已关闭,或者服务器响应将包含一些错误HTTP代码,则用户输入的新数据将不会保存在网格中。因此,简单的服务器端验证通常就足够了。如果您想实现额外的客户端验证,可以使用该功能。这通常就足够了。它可以帮助验证表单的一个字段。如果在验证过程中需要比较表单的多个字段(如果一个字段的值定义了另一个字段的有效值),则需要另外使用回调


已更新:在
fn
事件处理程序的内部,您可以测试它是否将在表单编辑内部调用。有很多方法可以做到这一点。例如,您可以测试
$(e.target).closest(“.FormGrid”).length>0
。如果这是真的,那么事件就在形式内部。此外,必须了解,在服务器上成功保存之前,当前编辑行不会更改。因此,您可以随时使用
getGridParam
“selrow”
选项来获取编辑行的id,并且可以使用
getRowData
getCell
在修改开始之前从网格中获取数据(与
savedrow
相同).

谢谢你的回复:)嗯,我原以为表单编辑和内联编辑一样有效,但现在我明白了。非常感谢@Oleg!:)@迈拉兹:不客气!jqGrid的一个大问题是,它包含许多重复的代码或许多相近的代码,但并不相同