[英]Why can't I execute my onClick after my OnclientClickEvent?
我在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*=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>
函数本身似乎正常执行,因为如果数据不正确,它将显示带有正确数据的警报
关键是执行此功能后,我需要事件OnClick来执行要执行的服务器端代码。 我知道可以创建另一个PageMethod来执行代码,问题是需要调用的代码不是静态的,因此我无法将其放在WebMethod上。
无论如何,我已经做了以下检查:
这是定义事件的按钮:
<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 comprobar();”这样的东西 甚至OnClientClick =“ comprobar();” 无法正常工作,即使味精与“”不同,它也总是返回假的true值?
值得注意的是,我无法调试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
的结果,并检查结果是true还是false,并在comprobar()
的末尾返回结果。 由于不知道PageMethods.F1
工作方式,因此无法以此更新代码。 (它不在您的帖子中)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.