在我的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 %>
答案 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。