在选择下拉列表中自动设置默认文本

时间:2014-07-22 14:11:45

标签: javascript jquery html selection

我有一个非常简单的选择下拉列表,其中包含将用户定向到各个页面的网址

   <select>
         <option value="url1">title1 </option>
         <option value="url2">title2 </option>
         <option value="url3">title3 </option>
         .........
   </select>

我将在所有这些(url1,url2,url3 ...)中提供这个用于导航的下拉菜单。是否可以根据我的网址在选择框中设置默认文本?如果我当前在url2上,我在选择框中的默认文本将是title2。我手动知道你可以使用

        <option selected="selected" value="url2">title2</option>

但有没有办法可以使用javascript来做,因为我有数百页?所有网址和标题都存储在我可以检索的数组中。

感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

你应该能够使用它:

var path = decodeURIComponent(window.location.pathname.replace(/\/$/, ""));
$("option").each(function () {
    var url = $(this).val();
    if (path.substring(0, url.length) === url) {
        $(this).prop('selected', true);
    }
});

路径是网址的结尾。下一个代码块循环遍历选项元素,并查看选项值是否与路径匹配,如果匹配,则将selected属性设置为true。

答案 1 :(得分:1)

您可以使用document.URL获取当前网址,也可以使用文档就绪,

$("#selectId option[value=" + document.URL + "]").prop('selected', true); 

但是document.URL包含完整路径,因此您需要截断不必要的部分,例如http:// https:/,如果它在select value中不存在。

而且,这是working fiddle

P.S小提琴只会第二次工作。它是第一次出现不同的URL。要成为一个JSFiddle个人的东西。

答案 2 :(得分:1)

假设您要将窗口位置中的网址(例如http://www.example.com/some/page.html)与您在下拉列表中找到的网页的网址相匹配:

var dropdown = document.getElementById( 'dropdown' );
for ( var i = 0; i < dropdown.childElementCount; ++i ) {
    if ( dropdown.children[i].value === document.location.href) {
        dropdown.selectedIndex = i;
        break;
    }
}

'dropdown'包含<select>元素的ID。 Jsfiddle:http://jsfiddle.net/RhZy6/

答案 3 :(得分:0)

说你有

<form name="MyForm">
<select name="SelectBox1">
<option>One
<option>Two
<option>Three
</select>

..等..其余表格/页面..

然后在你的javascript代码..

var el=document.forms.MyForm.SelectBox1;
el.selectedIndex=2; // sets option to "Three" in Select box, because first option is number 0, second =1, third = 2 etc

或者将它设置为一个值使用这样的函数..传入选择字段名称及其应该是的值

function setSelect(sFieldName, sValue) {
  var el=document.getElementsByName(sFieldName)[0] // returns array of all elements with that name so use [0] to get 1st one
  for (var i=0;i<el.options.length;
    if (el.options[i].value == sValue) { // if they match...
       el.selectedIndex=i; // then this should be the default
    }
}

称之为

之类的东西
setSelect("SelectBox1","http://ectetc")