【发布时间】:2015-01-16 08:35:17
【问题描述】:
我在 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"/>
我已经检查过,如果 return false 则 btn_mdu_confirmar_Click 不会执行,但如果我将其更改为 return true;它总是在 OnClientClickEvent 之后执行。那么,为什么不像 OnClientClick="return comprobar();"甚至 OnClientClick="comprobar();"不起作用,看起来它总是返回一个 false 一个 true 值,即使 msg 与“”不同?
值得注意的是,我无法调试 javascript 代码,但如果它正确显示警报,我看不出简单的 return 语句会失败的真正原因。
希望您能帮我解决这个问题,感谢您的宝贵时间。
【问题讨论】:
-
JavaScript 函数对象默认总是返回
void。你需要在你的函数comprobar()中设置return true
标签: javascript asp.net