繁体   English   中英

为什么在OnclientClickEvent之后无法执行onClick?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM