可以在jqgrid中的文本框中拖放图像

时间:2011-03-15 11:03:07

标签: ruby-on-rails textbox drag-and-drop jqgrid

在我的rails应用程序中,iam使用jqgrid在rows中输入数据。这里有一个描述框,允许某些字符没有。这里的问题是我可以拖放描述框所接受的图像和网址。我怎么能防止它。 这是我在一些编辑后从主要部分取出的短代码。

  $(document).ready(function() {

     colNamesData = [ 'Description', 'Hours']
     colModelHash = [ 
     {name:'description',index:'description', width:130,sorttype:"text", editable:true, edittype:"textarea", editoptions: {rows:"5",cols:"25",maxlength:"255"}, stype:'text'},
     {name:'hours',index:'hours', width:130, align:'center',editable:true, edittype:"select",editoptions:{value:"<%= hours_options %>"}, search:true, stype:'text'}
                      },
          ]
   $("#data_table").jqGrid({
      datatype: "local", 
      height: "auto",
      autowidth: true,
      ignoreCase: true,
      colNames: colNamesData, 
      colModel: colModelHash,
      pager: '#pager',
      rowNum:10,
      rowList:[10,25,50,100],
      sortname: 'hours',
      sortorder: 'desc',
      viewrecords: true,
      editurl:"/data_call.json", 
      caption: 'My info',

     },
      data:<%= raw @data_jqgrid_date.to_json %>
   });

   jQuery("#data_table").jqGrid('navGrid','#pager',{del:false,add:true,edit:false},{}, {}, {});  
   var details =  <%= raw @details.to_json %>

2 个答案:

答案 0 :(得分:1)

您可以将'drop'事件处理程序绑定到具有edittype:"textarea"的'description'列。为此,您可以添加dataEvents,看起来像

editoptions: {
   dataEvents: [
       {
            type: 'drop',
            fn: function(e) {
                console.log('drop');
                if (e.originalEvent !== undefined &&
                    e.originalEvent.dataTransfer !== undefined &&
                    e.originalEvent.dataTransfer.getData) {

                    console.log("URL: "+e.originalEvent.dataTransfer.getData('URL'));
                    console.log("Text: "+e.originalEvent.dataTransfer.getData('Text'));
                    e.preventDefault();
                }
            }
       }
   ]
}

在代码中,控件中删除的URL和文本将显示在控制台上,并且将阻止删除。您可以根据dataTransfer.getData('URL')dataTransfer.getData('Text')返回的数据阻止丢弃。

答案 1 :(得分:0)

在我看来,你可以有一个JavaScript方法。 只需将该文本框的更改方法与方法绑定即可。 检查值,如果它包含任何无效字符,则将其重置为balnk('')并返回false。