Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么可以';我不能在OnclientClickEvent之后执行onClick吗?_Javascript_Asp.net - Fatal编程技术网

Javascript 为什么可以';我不能在OnclientClickEvent之后执行onClick吗?

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

我在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>

函数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()