2017-10-18 106 views
0

請幫我理解爲什麼單擊事件正在我的科爾多瓦應用程序的頁面就緒事件中觸發。只要頁面加載點擊事件被解僱,如果沒有選擇國家,它仍然嘗試點擊「登錄幫助」來發送郵件。爲什麼? index.html中爲什麼點擊事件在頁面準備事件後被觸發?

`<div class="app-login-email-help"> 
     <a id="EmailUsLink" class="app-login-email-help-text" href="#"> 
      <span>Login Help</span> 
     </a> 
</div>` 

    $(document).on("pagecreate", function() { 

     $x.page.login.init(); 

     $("#EmailUsLink").on('click', $x.page.login.ConstructLoginHelp); 
     }); 
    }); 

在login.js

ConstructLoginHelp: function() { 
    var emailid = "[email protected]"; 
    var subjectLine = "Login Help"; 
    var emailBodyText = "Describe the login problem."; 
    if($("#SelectCountry option:selected").val() != "undefined"){ 
     if ($("#SelectCountry option:selected").text()){ 
      if (!_.contains(['US', 'AU', 'CA', 'IN', 'MY', 'PH', 'SG', 'GB'], $('#SelectCountry').val())) { 
       subjectLine = systemResources["LoginHelpSubjectLine".concat($("#SelectCountry option:selected").text())]; 
       emailBodyText = systemResources["LoginHelpEmailBody" + $("#SelectCountry option:selected").text()]; 
      } 
     } 
     $x.page.login.elements.emailUsLink.attr('href', 'mailto:' + emailid + '?subject=' + subjectLine + '&body=' + emailBodyText); 
    } 
    else 
     window.alert("Please Select Country"); 
} 

有一個下拉的,我沒有寫的第一個元素(「選擇國家」)不具有值。 我也在使用underscore.js 如果需要,請索取更多信息。

只要頁面開始加載,逐行執行就會顯示ConstructLoginHelp被觸發,併到達window.alert(頁面加載時不應發生)。現在它發生了兩次。並intrestingly鏈接點擊不起作用。

+1

_「爲什麼單擊事件被觸發ed「_--它不是 - 你的_function_被調用,因爲這是函數名稱附加'()'的作用。 – CBroe

+0

至於爲什麼「點擊」不會觸發警報,即使國家還沒有選擇,因爲你將它比作一個空格'''',嘗試將它改爲'「」',沒有空格在 – am05mhz

+0

之間刪除了仍然觸發電子郵件的空間。 – Hemant

回答

0

沒有您的線路有問題:

$("#EmailUsLink").on('click',$x.page.login.ConstructLoginHelp()); 

通過把括號在你的函數名的末尾,你正在執行的功能,而不是給它作爲一個回調。 刪除括號,它應該沒問題。

+0

謝謝,刪除括號。但問題依然存在。在顯示頁面之前顯示警報,並在沒有選擇點擊時顯示警報。 – Hemant

+0

你能告訴我們'$ x.page.login.init'的代碼嗎?你可能在其他地方調用ConstructLoginHelp函數。 – Poney

0

養成用較小代碼重現問題的習慣 :mcve

壞 :

$(document).on("ready", function() { 
 
    $("a").on("click", sayHello()); 
 
}); 
 

 
function sayHello() { 
 
    console.log("hello"); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#">Email us</a>

好 :

$(document).on("ready", function() { 
 
    $("a").on("click", sayHello); 
 
}); 
 

 
function sayHello() { 
 
    console.log("hello"); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#">Email us</a>

相關問題