使用表单发送另一个选择值作为参数

时间:2011-09-13 10:39:38

标签: javascript jquery html ruby-on-rails

我有一个带有select元素的表单,其中包含从外部源填充的类别列表。当我提交表单时,我希望能够发布所选选项(category_id)的值的参数,这可以按预期工作。但是,我还想传递第二个参数(category_name),该参数当前是select选项的文本。

为了清楚起见,下面是select元素的一个非常简单的表示:

<select name="category_id" id="category_id">
<option value='1'>All</option>
    <option value='2'>Category 1</option>
    <option value='3'>Category 2</option>
</select> 

我想知道这样做的最佳方法是什么。我是否需要使用Javascript或者是否有某些方法可以通过HTML进行此操作?为什么它值得我使用Rails构建应用程序,所以如果有一个聪明的方法来使用框架,这也是非常有用的知识。

提前感谢您的帮助。

戴夫

1 个答案:

答案 0 :(得分:3)

您可以更改值,使其包含两个值,然后将它们拆分在服务器上:

<select name="category_id" id="category_id">
    <option value='1|All'>All</option>
    <option value='2|Category 1'>Category 1</option>
    <option value='3|Category 2'>Category 2</option>
</select> 

或者使用一些javascript并更新隐藏字段:

HTML

<select name="category_id" id="category_id">
    <option value='1'>All</option>
    <option value='2'>Category 1</option>
    <option value='3'>Category 2</option>
</select> 
<input type="hidden" id="category_name" name="category_name" />

JS

function updateNameValue() {
    $('#category_name').val($('#category_id option:selected').text());
}

$('#category_id').change(updateNameValue);

updateNameValue(); // Call function here to make sure initial value is set

http://jsfiddle.net/6runZ/