2016-09-24 77 views
-2

我正在構建一個網頁,您必須從列表中選擇一個輸入,然後點擊一個按鈕,然後根據該選擇創建一個新頁面。如果沒有選擇列表中的任何內容並按下此按鈕,我希望提醒用戶在繼續之前必須從列表中選擇。在條件改變後仍然顯示Javascript警告

所以我最初的HTML有一個空白的href:<a id="Button" href="">Start</a>

然後我列表選擇後,通過JS添加此HREF:

choice.mousedown(function(){ 
    if (this.data('fullname')=='X'){ 
      document.getElementById('Button').href = '/newpageX';}} 

這一切工作正常,並根據需要精確地添加HREF的按鈕。當我下次嘗試在href仍然是emtpy時添加警報時,問題就出現了。因此,經過上面的js代碼,以提醒用戶,如果這HREF仍是空白(即沒有從列表中選擇),他們按下按鈕,我添加了一個檢查的過程如下(使用jQuery):

document.getElementById('Button').onclick = function() { 
    if ($('Button').attr('href') === undefined) { 
     alert('Please select an option from list above');}} 

如果沒有選擇任何內容,這似乎工作正常,但如果用戶確實從列表中選擇了某項內容,則此警報仍然會顯示,然後才能根據列表選擇(newpageX)正確進行到新頁面!這是我的主要問題。因此,好像href(defined/undefined)的條件在href通過列表選項定義之後不會通過jquery if語句重新檢查 - 並且因爲這個警告仍然顯示。我究竟做錯了什麼?我怎樣才能防止顯示警報,如果實際上現在基於列表選擇定義了href?這裏有更好的整體策略嗎?

此外,單獨 - 當href實際上是空的並且按下按鈕時,在警告中點擊'ok'後,頁面將被重新加載。我不相信這是必要的 - 我怎麼纔能有警報顯示,但不能重新加載頁面?我試圖添加'return false;'在if語句之後,但是當進行列表選擇時,它不會進入新頁面。

預先感謝所有幫助傢伙...

+2

一個好的開始是決定使用'jQuery'還是'Vanilla Javascript'。沒有理由混淆兩者。 – melancia

+3

'$('#Button')' – adeneo

+1

'$('Button')'是你問題的一部分 - 你想'$('#Button')' – Pointy

回答

0

好吧,評論上給我的答案的一部分,但完整的解決方案是改變的jQuery的第一行if語句:

if ($('#Button').attr('href') == '') { 

所以,我需要按鈕之前添加#,而且還改變了從=== undefined== ''

只需添加#按鈕之前不改變第二部分共殺害了警報。之後,我還能夠在警報後添加return false;,以防止在空按鈕單擊時重新加載頁面。