2017-01-23 38 views
1

我的問題是在IM的Prestashop工作(1.6.1.9)CMS網頁,即時通訊不許放任何腳本到CMS的網頁源代碼。(我不是使用iframe中對於這一點,它不是一個解決方案)..的Javascript鏈接<select> ID

所以我有一個下拉菜單,其中每個鏈接上的下拉鍊接到某個頁面。我想用一個java腳本功能來做到這一點。

但因爲我不能這樣調用示例中的頁面上的JavaScript,

<select id="selectdrops" name="newurl" onchange="menu_goto(this.form) "> 
    <option value="/index.html">Home</option> 
    <option value="/feedback.html">Feedback</option> 
    <option value="/links.html">Related Links</option> 
</select> 

我願我的javascript重點下拉「ID」如果多數民衆贊成可能嗎?

刪除:menu_goto(this.form)我想仍然可以完成有針對性的鏈接,可能只關注選擇「ID」。

我的.js文件看起來是這樣的:

$(document).ready(function() { 

    $(document).on('change', '#dropSelectAbout', function (e) { 
     e.preventDefault(); 
     menu_goto(); 
    }); 

    $(document).ready(function() { 
     $("a").click(function(event) { 
      alert(event.target.id); 
     }); 
    }); 

}); 

function menu_goto(menuform) 
{ 
    var baseurl = window.document.location.protocol + '//' + window.document.location.host; 
    selecteditem = menuform.newurl.selectedIndex ; 
    newurl = menuform.newurl.options[ selecteditem ].value ; 
    if (newurl.length != 0) { 
    location.href = baseurl + newurl ; 
    } 
} 

回答

1

我建議進行以下更改;

$(document).on('change', '#selectdrops', function (e) { 
     e.preventDefault(); 
     menu_goto(e.target.value); 
    }); 
}) 

function menu_goto(newurl) { 
    var baseurl = window.document.location.protocol + '//' + window.document.location.host; 

    if (newurl.length != 0) { 
     window.location = baseurl + newurl ; 
    } 
} 

刪除:(刪除下面的腳本,因爲它的目標是所有的< a>標籤它創建了一個彈出的對話框中的消息時,鏈接被點擊,在頂部的功能只是專注於我的下拉需要的腳本,其中id =「selectdrops」)

$(document).ready(function() { 
     $("a").click(function(event) { 
      alert(event.target.id); 
     }); 
    }); 

e.target.value會給你所選擇的頁面上選項,因此您可以將該值直接傳遞到您的menu_goto函數中。
location沒有因此一個ref財產使用window.location如有意向重定向到新建成的URL。

+0

你是真正的英雄,工作,感謝! – Ylama

0

如果你想上的變化(點擊按鈕後沒有)重定向你可以使用這個腳本:

$(document).ready(function() { 

    $(document).on('change', '#selectdrops', function (e) { 
      e.preventDefault(); 
      menu_goto(this); 
     }); 

}); 

function menu_goto(menuform) 
{ 
    if(menuform == null) 
     return; 

    newurl = $(menuform).val() ; 

    if (newurl.length != 0) { 
     location.href = baseUri + newurl ; 
    } 
} 

您可以使用基本URI Prestashop用來獲取商店網址的變量。這對子域更有效。 然後在沒有/(它已經在baseUri中)的情況下在select中設置鏈接。

編輯: 要使用按鈕點擊:

$(document).ready(function() { 

    $(document).on('click', '#golink', function (e) { 
      e.preventDefault(); 
      menu_goto(); 
     }); 

}); 

function menu_goto() 
{ 
    var menuform = $('#selectdrops'); 

    if(menuform == null) 
     return; 

    newurl = menuform.val() ; 

    if (newurl.length != 0) { 
     location.href = baseUri + newurl ; 
    } 
} 

在這種情況下,該按鈕鏈接到執行必須有ID golink。

+0

非常感謝那,但是我想點擊一個選項,然後它應該重定向到相應的頁面,在Value屬性中。也許我應該給

0

你忘了通過形式爲menu_goto函數(也選擇是假的參數在此被校正的代碼:

$(document).ready(function() { 
 

 
    $(document).on('change', '#selectdrops', function(e) { 
 
    e.preventDefault(); 
 
    menu_goto(this.form); 
 
    }); 
 

 
    $(document).ready(function() { 
 
    $("a").click(function(event) { 
 
     alert(event.target.id); 
 
    }); 
 
    }); 
 

 
}); 
 

 
function menu_goto(menuform) { 
 
    var baseurl = window.document.location.protocol + '//' + window.document.location.host; 
 
    selecteditem = menuform.newurl.selectedIndex; 
 
    newurl = menuform.newurl.options[selecteditem].value; 
 
    if (newurl.length != 0) { 
 
    location.href = baseurl + newurl; 
 
    } 
 
}
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script> 
 

 
<form> 
 
    <select id="selectdrops" name="newurl"> 
 
    <option value="/index.html">Home</option> 
 
    <option value="/feedback.html">Feedback</option> 
 
    <option value="/links.html">Related Links</option> 
 
    </select> 
 
</form>

+0

謝謝你,我試過這個,當菜單下降,我選擇

+0

在上下文之外嘗試此解決方案可以正常工作,事件被觸發並且頁面發生更改(如上例)。這可能是由於prestashop中的其他事情。也許所有這些都在iframe中,並且您正在更改iframe的位置。也許prestashop不會讓你改變位置。您應該在位置更改線上的檢查器中放置一個斷點,您可以確定。 –