如何仅提交带有下拉选择值的表单?

Posted

技术标签:

【中文标题】如何仅提交带有下拉选择值的表单?【英文标题】:How to submit a form with dropdown selected value only? 【发布时间】:2012-10-31 07:11:47 【问题描述】:

我想提交一个只有一个带有语言值的下拉菜单的表单,我想提交表单并访问该值,以便我可以本地化页面上的一些文本。

这是我正在使用但无法访问帖子值的代码

html 表单:

<form action='' method='post'>
<select id="lang">
    <option value="english">Eng</option>
    <option value="arabic">Arabic</option>
</select>
</form>

jQuery 提交表单:

 <script type="text/javascript">
    jQuery(function($)
        var lang = $("#lang").val();
        var Home = 'الرئيسية';

        $("#lang").change(function()
            cntr = $("#lang option:selected").val();

            if(lang=="arabic")
                $(".menu ul li a:eq(0)").text(Home);
            
            $('form').submit();
        );
    );


</script>

【问题讨论】:

您的&lt;select&gt; 没有name 属性。 【参考方案1】:

我认为您在选择中缺少“名称”属性:

<select name="lang" id="lang">
    <option value="english">Eng</option>
    <option value="arabic">Arabic</option>
</select>

【讨论】:

@defau1t name 属性是浏览器用来将表单输入序列化为查询字符串或发布数据的。它提供 POST 或 GET 中使用的 key=value 对中的键。 这是表单的工作方式,名称是标准化为 POST 请求中值的标识符的属性。表单中的每个字段都需要一个键和一个值,我们都决定(很久很久以前)为键使用“名称”属性。【参考方案2】:

您应该为“选择”元素指定“名称”属性

【讨论】:

【参考方案3】:

var lang = $("#lang").val(); 只会在页面加载并且需要name 进行选择时触发

将其移动到更改处理程序中,以便每次更新

   $("#lang").change(function()
       var lang=$(this).val();
        cntr = $("#lang option:selected").val();

        if(lang=="arabic")
            $(".menu ul li a:eq(0)").text(Home);
        
        $('form').submit();
    );

【讨论】:

以上是关于如何仅提交带有下拉选择值的表单?的主要内容,如果未能解决你的问题,请参考以下文章

如何在发布表单之前将下拉选择写入 mysql

如何在需要时仅提交隐藏/显示字段数据之一 - Laravel

如何在页面加载时“加载”依赖下拉?

flask 表单提交问题,如何实现点击执行执行按钮,执行下拉框选择的部分

如何使用 jquery 启用表单的提交按钮?

layui表单如何提交下拉框的键值