Вызывание нескольких функций JavaScript на нажатии кнопки

Если вы сравните words[0] и words[3], вы увидите, что они не совпадают. Это потому, что они являются указателями, поэтому операторы ==, < и т. Д. Будут искать адреса ваших строк C, а не их содержимое.

Так как их содержание одинаково, это возможно возможно & mdash; но не гарантировано & mdash; что их адреса тоже будут одинаковыми (это факт жизни со строковыми литералами). В вашем случае они не одинаковы, поэтому ключи логически различны, и оба элемента принимаются.

Указатели не являются контейнерами.

Вы можете заставить карту использовать strcmp вместо , предоставив пользовательский компаратор, или вы можете просто использовать std::string (или std::string_view) для своих клавиш. :)

16
задан Zhaph - Ben Duguid 16 April 2015 в 11:37
поделиться

7 ответов

Поскольку вы возвращаетесь из первого вызова метода, второй не выполняется.

Попробуйте что-нибудь вроде

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

или обратную ситуацию,

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

или если есть зависимость div1 от процедуры валидации.

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

Что может быть лучше, так это инкапсулировать несколько inline утверждений в мини-функцию, как это, чтобы упростить вызов:

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

и затем

OnClientClick="return clicked();"
28
ответ дан 30 November 2019 в 17:04
поделиться
btnSAVE.Attributes.Add("OnClick", "var b = DropDownValidate('" + drp_compcode.ClientID + "') ;if (b) b=DropDownValidate('" + drp_divcode.ClientID + "');return b");
-1
ответ дан 30 November 2019 в 17:04
поделиться

И, конечно, вы никогда не сможете вызывать эти две функции одновременно. Ни один человек в мире, кроме вас, одновременно работает на двух процессорах.

Лучший способ - вызвать родительскую функцию 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;
}
0
ответ дан 30 November 2019 в 17:04
поделиться

Это потому, что она возвращается после validateView();;

Используйте это:

OnClientClick="var ret = validateView();ShowDiv1(); return ret;"
4
ответ дан 30 November 2019 в 17:04
поделиться

Измените

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

на

OnClientClick="javascript: if(validateView()) ShowDiv1();">
1
ответ дан 30 November 2019 в 17:04
поделиться

Он не вызывается, потому что над ним есть оператор return. В следующем коде:

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

doStuff () никогда не будет вызываться. Я бы посоветовал написать функцию-оболочку

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

, а затем вызвать ее из обработчика onclick .

0
ответ дан 30 November 2019 в 17:04
поделиться

Я думаю, что поскольку return validateView(); вернет значение (событие клика?), ваш второй вызов ShowDiv1(); не будет вызван.

Вы всегда можете обернуть несколько вызовов функции в другую функцию, т.е.

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

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

Вы также можете попробовать:

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

Хотя я понятия не имею, вызовет ли это исключение.

0
ответ дан 30 November 2019 в 17:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: