Javascript 为什么可以';我不能在OnclientClickEvent之后执行onClick吗?
我在javascript中有以下函数,它调用执行一些服务器端检查的WebMethod:Javascript 为什么可以';我不能在OnclientClickEvent之后执行onClick吗?,javascript,asp.net,Javascript,Asp.net,我在javascript中有以下函数,它调用执行一些服务器端检查的WebMethod: <script type="text/javascript"> function comprobar() { PageMethods.F1 ( $("input[type=text][id*=txt_nombre_nu]").val(), $("input[type=text][id*=txt_numero_empleado]").val(), $("input[type=text][id
<script type="text/javascript">
function comprobar()
{
PageMethods.F1
(
$("input[type=text][id*=txt_nombre_nu]").val(),
$("input[type=text][id*=txt_numero_empleado]").val(),
$("input[type=text][id*=combo_empresa_nu]").val(),
$("input[type=text][id*=txt_ceco]").val(),
$("input[type=text][id*=combo_gestor_nu]").val(),
$("input[type=text][id*=combo_crear_datos]").val(),
function (msg)
{
if (msg == "")
{
alert("Datos correctos");
return true;
}
else
{
alert(msg);
return false;
}
},
function (msg)
{
}
);
}
</script>
函数comprobar()
{
PageMethods.F1
(
$(“输入[type=text][id*=txt\u nombre\u nu]”)val(),
$(“输入[type=text][id*=txt\u numero\u empleado]”)。val(),
$(“输入[type=text][id*=combo\u empresa\u nu]”)val(),
$(“输入[type=text][id*=txt\u ceco]”)val(),
$(“输入[type=text][id*=combo\u gestor\u nu]”)val(),
$(“输入[type=text][id*=combo\u crear\u datos]”)。val(),
功能(msg)
{
如果(msg==“”)
{
警报(“Datos Correctoros”);
返回true;
}
其他的
{
警报(msg);
返回false;
}
},
功能(msg)
{
}
);
}
函数本身似乎执行正确,因为如果数据不正确,它会显示包含正确数据的警报
关键是,在执行这个函数之后,我需要执行服务器端代码的事件OnClick。我知道可以创建另一个PageMethod来执行代码,问题是需要调用的代码不是静态的,所以我不能将其放在WebMethod上
无论如何,我已经做了以下检查:
<script type="text/javascript">
function comprobar()
{
PageMethods.F1
(
$("input[type=text][id*=txt_nombre_nu]").val(),
$("input[type=text][id*=txt_numero_empleado]").val(),
$("input[type=text][id*=combo_empresa_nu]").val(),
$("input[type=text][id*=txt_ceco]").val(),
$("input[type=text][id*=combo_gestor_nu]").val(),
$("input[type=text][id*=combo_crear_datos]").val(),
function (msg)
{
if (msg == "")
{
alert("Datos correctos");
return true;
}
else
{
alert(msg);
return false;
}
},
function (msg)
{
}
);
}
</script>
这是我定义事件的按钮:
<obout:OboutButton runat="server" ID="btn_mdu_confirmar" Text="Confirmar" CausesValidation="true"
OnClientClick="comprobar();return false;" OnClick="btn_mdu_confirmar_Click"/>
我已经检查过,如果返回false,那么btn_mdu_confirmar_Click不会执行,但如果我将其更改为return true;它总是在OnClientClickEvent之后执行。那么,为什么像OnClientClick=“return compobar();”或者甚至像OnClientClick=“compobar();”这样的东西不起作用,并且即使msg与“”不同,它看起来总是返回一个假值和一个真值呢
值得注意的是,我无法调试javascript代码,但如果它正确显示警报,我看不出简单的return语句会失败的真正原因
希望您能在这方面帮助我,谢谢您的时间。这是与您的JS代码相关的更新代码:
function comprobar()
{
PageMethods.F1
(
$("input[type=text][id*=txt_nombre_nu]").val(),
$("input[type=text][id*=txt_numero_empleado]").val(),
$("input[type=text][id*=combo_empresa_nu]").val(),
$("input[type=text][id*=txt_ceco]").val(),
$("input[type=text][id*=combo_gestor_nu]").val(),
$("input[type=text][id*=combo_crear_datos]").val(),
function (msg)
{
if (msg == "")
{
alert("Datos correctos");
return true;
}
else
{
alert(msg);
return false;
}
},
function (msg)
{
}
);
return true; //now comprobar() always returns true;
}
那么,HTML中的此更新应该可以做到这一点:
<obout:OboutButton runat="server" ID="btn_mdu_confirmar" Text="Confirmar" CausesValidation="true"
OnClientClick="return comprobar();" OnClick="btn_mdu_confirmar_Click"/>
您可以检查方法
PageMethods.F1
的结果,并检查这是真是假,然后在comprobar()
的末尾返回结果。我无法用此更新代码,因为我不知道PageMethods.F1
如何工作。(它不在您的帖子中)。JavaScript函数对象在默认情况下总是返回void
。您需要在函数comprobar()