我在使用Telerik Grid的视图中有这一行代码:
columns.Bound(o => o.URI).Width(10).Sortable(false)
.ClientTemplate("<A class='btnGrid' id=source<#= ID #> onclick=GridSelection.addItem('<#= ID #>') >Add</A>").Title("").Width(50);
GridSelection的addItem和disableSelected函数的JS代码:
GridSelection = {
addItem: function (value) {
var anchorOption = $("a[id=source" + value + "]");
anchorOption.click(function (e) { // variable name changed from "event"
e.preventDefault();
return false; // as suggested by mr. Hamdi
});
anchorOption.fadeTo("slow", .5);
GridSelection.disableSelected(anchorOption, true);
var data = $("#GridSource").data('tGrid').data;
var selectedObject;
for (var item in data) {
if (data[item].ID == value) {
selectedObject = data[item];
break;
}
}
var grid = $("#GridSelected").data('tGrid');
var newData = $("#GridSelected").data('tGrid').dataSource._data;
newData.push(selectedObject);
grid.dataBind(newData);
grid.sort("");
anchorOption.fadeTo("slow", .5);
},
disableSelected: function (element, disable) {
//false on IEs 6, 7 and 8
if (!$.support.leadingWhitespace) {
if (disable) {
$(element).attr('disabled', 'disabled');
} else {
$(element).removeAttr('disabled');
}
}
},
// other GridSelection subfunctions here...
当我在IE中运行MVC3 Web应用程序时,由于GridSelection.disableSelected函数的作用,它可以很好地运行。但是在Chrome和Mozilla Firefox中,event.preventDefault()无法起作用。即使用户已经在那里添加了数据项,锚链接仍会添加数据项。
在GridSelection.addItem函数中使用preventDefault方法是否OK? preventDefault方法阻止哪个属性,是href还是onclick?
这有什么问题吗?如何修复此错误?有谁能帮忙?
return false
后面加上分号了?这不应该会导致错误,但值得一试。 - Hamdiif (!$.support.leadingWhitespace)
,会发生什么呢?那么你只会得到那个条件语句的主体部分。 - HamdiGridSelection.addItem()
函数实际上是如何调用的(以及它如何与标记中的.verify()
函数相关)。 - nnnnnn.addItem()
而不是.verify()
。.verify()
是我以前的解决方案之一,即创建一个单独的函数在onclick中调用。但我已经删除它并选择不使用它。再次道歉。 - ideAvi