我想知道当jquery函数触发时如何在aspx页面中停止执行代码:
$(document).ready(function () {
$("#btnSaveProvvisorio").click(function jControllaProvvisorio () {
var i;
var jElemento;
$('.MyTextBoxClass').each(function (i, v) {
jElemento = $(this).val();
if (jElemento) {
if (isNaN(jElemento)) {
alert("Warning: " + jElemento + " is not a number!");
return false;
}
else
if (parseInt(jElemento) <= 0){
alert("Warning: " + jElemento + " is negative!");
return false;
}
}
});
});
});
如何设置按钮:
<asp:Button ID="btnSaveProvvisorio" runat="server" style="text-align: center" Text="Salva provvisorio" OnClick="btnSaveProvvisorio_Click" BackColor="#FF6600" ClientIDMode="Static" OnClientClick="jControllaProvvisorio ()"/> ?
这个版本给了我一个错误;没有OnClientClick标记,页面aspx.cs无论如何都不会停止。 错误在哪里? 谢谢! 伊戈尔
答案 0 :(得分:1)
对于您的按钮,您无需分配OnClientClick
,因为您可以通过jQuery附加click事件。这意味着您的按钮看起来像:
<asp:Button ID="btnSaveProvvisorio" runat="server"
style="text-align: center"
Text="Salva provvisorio"
OnClick="btnSaveProvvisorio_Click"
BackColor="#FF6600"
ClientIDMode="Static" />
在您的jQuery click事件中,您需要将event
参数传递给您的函数,然后使用e.preventDefault()
来停止服务器端执行。为此,您的jQuery将如下所示:
$(document).ready(function ()
{
$("#btnSaveProvvisorio").on("click", function (e)
{
var i;
var jElemento;
$('.MyTextBoxClass').each(function (i, v)
{
jElemento = $(this).val();
if (jElemento)
{
if (isNaN(jElemento))
{
alert("Warning: " + jElemento + " is not a number!");
// prevent ASP.NET server-side click from occurring.
e.preventDefault();
}
else if (parseInt(jElemento) <= 0)
{
alert("Warning: " + jElemento + " is negative!");
// prevent ASP.NET server-side click from occurring.
e.preventDefault();
}
}
});
});
});
答案 1 :(得分:0)
确保您在“OnClientClick”中返回您调用的函数。所以你的按钮应该是:
<asp:Button ID="btnSaveProvvisorio" runat="server" style="text-align: center" Text="Salva provvisorio" OnClick="btnSaveProvvisorio_Click" BackColor="#FF6600" ClientIDMode="Static" OnClientClick="return jControllaProvvisorio();"/> ?