2012-08-15 87 views
1

我想在提交表单时发送选项框的值和键。我觉得这应该很简单,但我不确定如何去做。下面是我的形式片段来证明什么,我引用:发送选项框的值和键作为参数?

<form name='form' onSubmit="return checkForm();" action="../servlet/AccountRequest"> 

<select name="type1"> 
    <option value="1">Option A</option> 
    <option value="2">Option B</option> 
</select> 

<br/><input type="button" id="Submit" onclick="checkForm(this.form)" value="Request" /> 
<input type="reset" value="Cancel"/> 
</form> 

在正常情况下,如果我在下拉框中选择“选项A”,我想送价值,或“1”。但是,我希望实际发送选择的值AND键,在这种情况下是“1”和“选项A”。

在我的情况下,我调用验证表单输入(还有其他字段,如名字,姓氏,电子邮件地址和密码)的checkForm()JavaScript函数,然后将参数转发给Java类AccountRequest)。我确信有一种方法可以在点击“请求”按钮时将密钥存储为变量,我只是不知道如何。

任何帮助将不胜感激!

回答

2

它可能不是您所期望的方式,但你可以发送键/值对你的价值,当解析它你收到它的服务器端。

<select name="type1"> 
    <option value="1,Option A">Option A</option> 
    <option value="2,Option B">Option B</option> 
</select> 
1

使用复合值,然后解析它在服务器上:

<option value="1_A">Option A</option> 
2

在HTML中,这是不可能的:贡献的一个select元件中的数据是定义为选定optionvalue属性,当存在时(否则选定option元素的含量)。

在JavaScript中,一旦您决定应该如何传递内容(在您的描述中为“key”),这将非常容易。最简单的方法是,可以将内容附加到value属性中,字符串之间有一些分隔符;那么你将不得不解析服务器端,但这也很简单。

但是,它是option元素的主意的一部分,即内容是用户界面中的可见字符串,用户可以理解,属性是机器可读的易于处理的数据。在良好的设计中,他们保持独立,不合并;服务器应该只需要来自value属性的数据;否则有一个应该修复的设计缺陷。

3

您可以与您的数据的JSON表示玩:

<select name="type1"> 
<option value="{'1':'Option A'}">Option A</option> 
<option value="{'2':'Option B'}">Option B</option> 
</select> 
1

您可以添加以下代码,让您的选择<option>标签的文本在checkform功能:

var select = document.getElementsByName("type1")[0]; // get select element - simpler if it has an ID because you can use the getElementById method 
var options = select.getElementsByTagName("option"); // get all option tags within the select 

for (i = 0; i < options.length; i++) { // iterate through all option tags 
    if (options[i].value == select.value){ // if this option is selected 
     var key = options[i].innerHTML; // store key of selected option here 
    } 
} 

DEMO, which tells you the key that's selected

0

您可以使用隐藏的输入类型发送值

1 - 选择默认值:

<input type="hidden" id="theValue" name="type1Value" value="Option A"/> 

2。-add的onChange功能,您的选择,从而改变一个隐藏值

<select id="type1" name="type1" onChange="updateValue()"> 
    <option value="1">Option A</option> 
    <option value="2">Option B</option> 
</select> 

假设你正在使用jQuery:

function updateValue(){ 
    var value= $('#type1').find(":selected").text(); 
    $('#theValue').val(value); 
} 

所以选择的值将在type1Value变量,易发!