Изображения можно перетаскивать в текстовое поле в jqgrid - PullRequest
1 голос
/ 15 марта 2011

В моем приложении rails я использую jqgrid для ввода данных в строки. Есть окно описания, которое не допускает никаких символов. Проблема в том, что я могу перетаскивать изображения и ссылки, которые принимает окно описания.предотвратить это.вот короткий код, который я вынул из основного после некоторого редактирования ..

  $(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 ]

1 голос
/ 15 марта 2011

Вы можете привязать обработчик события drop к столбцу description, имеющему edittype:"textarea".Для этого вы можете включить в код 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').

0 голосов
/ 15 марта 2011

На мой взгляд, у вас может быть метод JavaScript. Просто свяжите метод изменения этого текстового поля с методом. Проверьте значение, если оно содержит какой-либо недопустимый символ, затем сбросьте его на balnk ('') и верните false.

...