天才,
我在我的前端代码中有这个Javascript函数,我正在尝试推动更多客户端验证步骤,以便通过后端从过多的验证工作中解除。这是Javascript函数:
<script type = "text/javascript" >
function watchdelete() {
var manufacturer = document.getElementById('<%:drpManufacturer.ClientID%>');
var model = document.getElementById('<%:drpModel.ClientID%>');
var strManufacturer = manufacturer.options[manufacturer.selectedIndex].value;
var strModel = model.options[model.selectedItem];
if (strManufacturer) // If there is a selected Manufacturer
{
if (confirm("Are you Sure you want to delete this Dimension Detail?"))
{
if (strModel) return true;
else
{
alert("Please select a car model first.");
return false;
}
}
}
else
{
alert("Please select a Manufacturer first before deleting");
return false;
}
}
</script>
<asp:ScriptManager ID="scripman1" runat="server" EnablePageMethods="True">
</asp:ScriptManager>
这是有问题的删除按钮代码,OnclientClick指向Javascript函数,Onclick指向后端函数:
<asp:Button ID="btnDimensionDel" runat="server" Text="Delete" OnClientClick = "watchdelete();" OnClick="btnDimensionDel_Click" />
我注意到我的后端C#代码在不应该被调用时被调用。我有什么办法可以改变这个吗?我在这里做错了什么?
答案 0 :(得分:-1)
确保在OnclientClick函数之前插入关键字return,并从Javascript函数返回false,以便不会调用C#后端。
答案 1 :(得分:-1)
在按钮的事件中,您正在调用js方法,没有别的。因此,在执行指定的方法后,浏览器将执行按钮的默认行为。如果你想避免这种情况,你必须使用它:OnClientClick = "watchdelete(); return false;"
但是,因为你的方法正在返回处理情况的东西,所以你可以简单地返回你的方法的返回值:
<asp:Button ID="btnDimensionDel" runat="server" Text="Delete" OnClientClick = "return watchdelete();" OnClick="btnDimensionDel_Click" />