单击按钮调用多个JavaScript函数

时间:2010-03-10 04:24:53

标签: javascript function

如何在按钮点击事件上调用多个功能?

这是我的按钮,

<asp:LinkButton
    ID="LbSearch"
    runat="server"
    CssClass="regular"
    onclick="LbSearch_Click"
    OnClientClick="return validateView();ShowDiv1();">

但我的ShowDiv1没有被调用......

我的JavaScript功能:

function ShowDiv1() {
    document.getElementById("ReportDiv").style.display = 'block';
    return false;
}

function validateView() {

    if (document.getElementById("ctl00_ContentPlaceHolder1_DLCategory").selectedIndex == 0) {
        document.getElementById("ctl00_ContentPlaceHolder1_ErrorMsg").innerHTML = "Please Select Your Category";
        document.getElementById("ctl00_ContentPlaceHolder1_DLCategory").focus();
        return false;
    }
    if (document.getElementById("ctl00_ContentPlaceHolder1_DLEmpName").selectedIndex == 0) {
        document.getElementById("ctl00_ContentPlaceHolder1_ErrorMsg").innerHTML = "Please Select Your Employee Name";
        document.getElementById("ctl00_ContentPlaceHolder1_DLEmpName").focus();
        return false;
    }
    return true;
}

如果ValidateView()函数返回true,我应该调用ShowDiv1()

11 个答案:

答案 0 :(得分:28)

因为您从第一次方法调用返回,所以第二次不执行。

尝试类似

的内容
OnClientClick="var b = validateView();ShowDiv1(); return b"

或扭转局面,

OnClientClick="ShowDiv1();return validateView();"

或者如果div1对验证例程有依赖关系。

OnClientClick="var b = validateView(); if (b) ShowDiv1(); return b"

最好的方法是将封装多个内联语句封装到这样的迷你函数中,以简化调用:

// change logic to suit taste
function clicked()  {
    var b = validateView(); 
    if (b) 
        ShowDiv1()
    return b;
}

然后

OnClientClick="return clicked();"

答案 1 :(得分:4)

那是因为,它会在validateView();;

之后返回

使用此:

OnClientClick="var ret = validateView();ShowDiv1(); return ret;"

答案 2 :(得分:2)

试试这个.... 我知道了... onClientClick =“var b = validateView(); if(b)var b = ShowDiv1(); return b;”

答案 3 :(得分:1)

更改

OnClientClick="return validateView();ShowDiv1();">

OnClientClick="javascript: if(validateView()) ShowDiv1();">

答案 4 :(得分:0)

它没有被调用,因为你上面有一个return语句。在以下代码中:

function test(){
  return 1;
  doStuff();
}

永远不会调用doStuff()。我建议写一个包装函数

function wrapper(){
   if (validateView()){
     showDiv();
     return true;
   }
}

然后从onclick处理程序调用包装函数。

答案 5 :(得分:0)

我认为,由于return validateView();会返回一个值(对于click事件?),您的第二个调用ShowDiv1();将不会被调用。

您始终可以在另一个函数中包含多个函数调用,即

<asp:LinkButton OnClientClick="return display();">

function display() {
   if(validateView() && ShowDiv1()) return true;
}

您也可以尝试:

<asp:LinkButton OnClientClick="return (validateView() && ShowDiv1());">

虽然我不知道是否会引发异常。

答案 6 :(得分:0)

当然,你永远不能同时调用这两个函数。除了你同时使用两个处理器之外,世界上没有任何人。

最好的方法是调用JavaScript父函数,然后指定要调用的所有函数序列。例如,

function ShowDiv1() {
    document.getElementById("ReportDiv").style.display = 'block';
    return false;
}

function validateView()
{
    if (document.getElementById("ctl00_ContentPlaceHolder1_DLCategory").selectedIndex == 0) {
        document.getElementById("ctl00_ContentPlaceHolder1_ErrorMsg").innerHTML = "Please Select Your Category";
        document.getElementById("ctl00_ContentPlaceHolder1_DLCategory").focus();
        return false;
    }
    if (document.getElementById("ctl00_ContentPlaceHolder1_DLEmpName").selectedIndex == 0) {
        document.getElementById("ctl00_ContentPlaceHolder1_ErrorMsg").innerHTML = "Please Select Your Employee Name";
        document.getElementById("ctl00_ContentPlaceHolder1_DLEmpName").focus();
        return false;
    }
    ShowDiv1();
    return true;
}

答案 7 :(得分:0)

如果有超过2个js函数,那么也可以实现以下两种方式:

  1. 如果你有两个以上的功能,你可以在条件

    的情况下将它们分组

    OR

  2. 你可以写两个不同的if条件。

  3. 1 OnClientClick =&#34; var b = validateView(); if(b)ShowDiv1(); if(b)testfunction();返回b&#34;&gt;

    OR

    2 OnClientClick =&#34; var b = validateView();如果(b)中 {

    ShowDiv1();

    testfunction();

    }返回b&#34;&gt;

答案 8 :(得分:0)

有时它会给出“返回不是函数”的语法错误,因此在这种情况下只需删除return并且它将正常工作:)如下所示

OnClientClick="var b = validateView(); if(b) var b = ShowDiv1(); b;"

答案 9 :(得分:0)

  <asp:Button ID="btnSubmit" runat="server"  OnClientClick ="showDiv()"
   OnClick="btnImport_Click" Text="Upload" ></asp:Button>

答案 10 :(得分:-1)

btnSAVE.Attributes.Add("OnClick", "var b = DropDownValidate('" + drp_compcode.ClientID + "') ;if (b) b=DropDownValidate('" + drp_divcode.ClientID + "');return b");