在选择框中获取已禁用的值(已禁用和之前已选中)选项

时间:2012-03-14 06:46:33

标签: php javascript html

我已经在下面写了一行来显示多选框,我想要几个选项已禁用,这是先前选择的。

<select multiple="multiple" name='cars[]'>
    <option value="volvo" disabled selected='selected'>Volvo</option>
    <option value="saab">Saab</option>
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
</select> 

所以这里在POST方法中我希望获得所有选定选项的值,包括第一个volvo。

3 个答案:

答案 0 :(得分:1)

Afaik,没有现代浏览器会在表单中提交禁用的选项/字段。最简单的解决方案是使用“readonly”属性使其成为“只读”字段。

但是,您必须将字段设置为看起来已被禁用,因为readonly不会更改字段的外观,它只是阻止用户修改它。

然而,丑陋的部分是某些浏览器不允许为select字段设置readonly属性。

在这种情况下我通常做的是实际禁用select并将值存储在隐藏字段中,而不是使用一些不那么难看的javascript来动态控制它。

<强>更新

您可以轻松编写“serializeDisabled”函数,迭代已禁用的表单元素,这些元素具有name属性并在末尾使用jQuery.param函数,以生成序列化字符串(函数来自用户CMS):

(function ($) {
  $.fn.serializeDisabled = function () {
    var obj = {};

    $(':disabled[name]', this).each(function () { 
        obj[this.name] = $(this).val(); 
    });
    return $.param(obj);
  }
})(jQuery);

答案 1 :(得分:1)

您可以创建一个javascript函数来循环选项onSubmit并再次启用它们。禁用的元素不会被发布。

答案 2 :(得分:1)

当您设置禁用时永远不会进入POST数据....替换选择输入类型text..and使用“readonly”属性...

由于