2011-04-08 46 views
10

也许我误解这里,但考虑下面的HTML:价值属性上<select>标签不选择默认选项

<select value="2"> 
    <option value="1">Something</option> 
    <option value="2">Something else</option> 
</select> 

我希望“别的东西”是默认选择的选项。但是,它似乎不是。为什么是这样,我应该做什么不同?

回答

7

拥有默认选项的唯一方法是在选项标签中选择。

<SELECT> 
<OPTION>Something 
<OPTION SELECTED>Something Else 
+3

Hrmph。这与所有其他表单元素的工作原理是相反的。 – crazy2be 2011-04-08 02:04:39

+1

@crazy:它允许元素具有多个选定的值。 @doc:你对价值属性的理论是完全错误的。 – BalusC 2011-04-08 02:06:00

+0

@BalusC。我同意。选择标记没有值选项。我编辑了我的答案。 – 2011-04-08 02:10:55

17

您使用option元素selected属性来指定默认选项。

<select> 
    <option value="1">Something</option> 
    <option value="2" selected="selected">Something else</option> // this is default 
</select> 

select elements do not have a value attribute.

+0

人。我将不得不使用javascript设置默认值,然后,胡须模板似乎不允许在模板内进行相等性测试... 无论如何,感谢您的回答! – crazy2be 2011-04-08 04:07:25

+0

@ crazy2be能否分享您用来做这件事的JavaScript代码。 – nanospeck 2014-01-08 06:55:37

+0

@nanospeck:不幸的是,我不再有确切的代码。我想我也可能在胡须模板中使用了一些像https://github.com/crazy2be/wfdr-example/blob/master/shared/tmpl/base/chunks/menu这样的东西(例如在一个胡须模板中定义每个可能的值映射或结构并检查存在,而不是进行比较)。 – crazy2be 2014-01-12 21:21:10

1

从而忽略了<select>元素没有一个value属性。因此,您有一个选择<select>而其<option>元素都不具有selected属性,这意味着将第一个<option>作为默认选择。

0

阵营JS

某些编码实现,比如ReactJS允许您使用value属性与<select>标签所以这将是非常有效的代码:

<select value="2"> 
    <option value="1">Something</option> 
    <option value="2">Something else</option> 
</select> 

HTML与属性最小化:

当然,通常你会想要指定状态值,所以临时它是可更新的。

但是,如果您使用的是纯HTML,你必须按如下方式使用selected属性,为<option>标签:

<select> 
    <option value="1">Something</option> 
    <option value="2" selected>Something else</option> 
</select> 

HTML与全属性规格:

上述用途属性的最小化,但你也可以指定完整的表格,如果你想:

<select> 
    <option value="1">Something</option> 
    <option value="2" selected="selected">Something else</option> 
</select> 
0

我知道这篇文章是相当古老的,但如果其他人正在努力与此,你可以实现你正在寻找使用jQuery的功能。

使用PHP的完整代码会是这样的

PHP

if ($_SERVER['REQUEST_METHOD']== "POST") { 
$thing = $_POST['things']; 
} else { 
$thing =""; 
} 

HTML

<select name='things' value="<?php echo $thing; ?>"> 
    <option value="1">Something</option> 
    <option value="2">Something else</option> 
</select> 

JQUERY

$(function() { 
    $("select[value]").each(function() { 
     $(this).val(this.getAttribute("value")); 
    }); 
}); //end document ready 

这将允许用户选择的选项保持选中 在页面重新加载后,而不是返回 默认值。