onclientClick imageButton返回false不起作用+答案

时间:2011-03-18 18:53:35

标签: javascript postback

我已经搜索了大约30分钟。

调用此方法无效。 无论如何,alert (a())将返回false但是回发。

function a()
{
   var a = new Boolean();
   return a;
}

但是有效,没有回复:

function a()
{
   var a = new Boolean();
   a = false;
   return a;
}

5 个答案:

答案 0 :(得分:1)

你如何放置OnClientClick? Javascript返回false并且.NET返回false不一样。如果你的代码是

<asp:ImageButton runat="server" OnClientClick="a()" />

然后只有javascript返回false。让.NET使用return知道响应:

<asp:ImageButton runat="server" OnClientClick="return a()" />

答案 1 :(得分:0)

最有可能的是,使用您的函数的代码期望false不是“假”。如果对象new Boolean()被强制为布尔,则返回false。但是,对象 new Boolean() false不同。

new Boolean() == false; // this is true
new Boolean() === false; // this is false!

最有可能的是,消费代码正在进行===比较,而不是进行==比较。只是做:

function a()
{
    var b = false;
    return b;
}

答案 2 :(得分:0)

布尔值是一个对象,你必须返回

function a()
{
   var a = new Boolean();
   return a.valueOf();
}

答案 3 :(得分:-1)

在这个函数中

function a()
{
   var a = new Boolean();
   return a;
}

你声明var a = new Boolean();并返回布尔对象NOT VALUE
您键入将其强制转换为布尔值但未设置值,这意味着它未定义

你的功能

function a()
{
   var a = new Boolean();
   a = false;
   return a;
}

您正在指定一个布尔对象,然后将其重新指定为布尔值false并返回布尔变量false;


你也可以这样做。

function a()
{
   return false;
}

答案 4 :(得分:-1)

如果某个方法没有返回任何内容,它在技术上会返回“falsey”,因此为了避免歧义,浏览器需要返回“真假”。所以在你的情况下你可以这样做:

function a()
{
   var a = new Boolean();
   return !!a;
}

!!将你的值转换为真正的布尔值