当style =“display:none;”</select>时,<select>标签发布所有数据

时间:2013-11-03 17:25:01

标签: javascript php html

当我选择显示相关子类别的任何主要类别时,我有主要类别和子类别的产品。但是当我发布表单时,它会发布最后一个子类别值而不是选定的子类别值。

JavaScript代码

   $(function() {
    $('#category').change(function(){
        $('.sub-category').hide();
        $('#' + $(this).val()).show();
    });
});

HTML代码

 <Select id="category" name="product_category">
  <option value="eco">Main Category 1</option>
 <option value="organic">Main Category 2</option>
  </Select>

  <Select name="product_sub" id="eco" class="sub-category">
  <option value="eco1">Sub Category 1</option>
  <option value="eco2">Sub Category 2</option>
   </Select>

<Select id="organic" name="product_sub" class="sub-category" style="display:none;width:270px;">
  <option value="organic1">Sub Category 3</option>
   <option value="organic2">Sub Category 4</option>
 </Select>

例如:当我选择子类别1时,其子类别3的发布值

1 个答案:

答案 0 :(得分:5)

所有成功的表单字段都会提交给服务器。 CSS display不会影响表单字段是否被视为成功。 The HTML spec defines what makes a control successful.

  

成功的控制对于提交是“有效的”。每一次成功   control的控制名称与其当前值配对   提交的表单数据集。必须定义成功的控制   在FORM元素中,必须具有控件名称。

     

然而:

     
      
  • 禁用的控件无法成功。
  •   
  • 如果表单包含多个提交按钮,则只有激活的提交按钮成功。
  •   
  • 所有“打开”复选框都可能成功。
  •   
  • 对于共享name属性相同值的单选按钮,只有“on”单选按钮可能会成功。
  •   
  • 对于菜单,控件名称由SELECT元素提供,值由OPTION元素提供。只有选定的选项可能   成功的。如果未选择任何选项,则控件不会   成功,名称和任何值都没有提交给   表单提交时的服务器。
  •   
  • 文件选择的当前值是一个或多个文件名的列表。提交表格后,每个文件的内容都是   与其余表格数据一起提交。文件内容是   根据表单的内容类型打包。
  •   
  • 对象控件的当前值由对象的实现决定。
  •   
     

如果控件在提交表单时没有当前值,   用户代理不需要将其视为成功控制。

     

此外,用户代理不应考虑以下控件   成功的:

     
      
  • 重置按钮。
  •   
  • 已设置declare属性的OBJECT元素。
  •   
     

由于样式而未呈现的隐藏控件和控件   表格设置可能仍然成功。

Disable您不想提交的表单字段。

$('#category').change(function(){
    $('.sub-category').hide().prop('disabled', true);
    $('#' + $(this).val()).show().prop('disabled', false);
});