如何根据提交的每个标签获取多选optgroup值?

时间:2017-01-14 05:57:19

标签: javascript jquery html multi-select optgroup

我有一个包含多个optgroup的选项。 我想从每个组中选择多个值&在提交时,根据(optgroup)标签获取值。

HTML 代码

<table>
 <tr>
  <td>Select</td>
  <td>
   <select multiple="multiple" id="multiGrpSel" ">
     <optgroup label="Indutry Types" id="types">
        <option value="1">Private</option>
        <option value="2">Public</option>
        <option value="3">Govt</option>
     </optgroup>
     <optgroup label="Unit Category" id="unit"> 
      <option value="1">Micro</option> 
      <option value="2">Small</option> 
      <option value="3">Medium</option> 
     </optgroup>
   </select>
  </td>
 </tr>
 <tr><th align="center"> <input type="button" id="submit" class="button" value="Submit"> </th></tr> 
</table>

并在提交

$("#submit").die('click').live('click',function() {

    $('#multiGrpSel').find("option:selected").each(function(){
        //optgroup label
        console.debug('label='+$(this).parent().attr("label"));
        //optgroup id
        console.debug('id='+$(this).parent().attr("id"));

        // values based on each group ??
        id = $(this).parent().attr("id");
        console.debug('value='+$('#'+id).val());
    });


}); 

如果有第一个和第二个选项的两个选项第二个选择组被选中,我得到标签&amp; id ,但该值变为空白。

输出:

label=Unit Category
id=unit
value=
label=Unit Category
id=unit
value=
label=Industry Types
id=types
value=
label=Industry Types
id=types
value=

2 个答案:

答案 0 :(得分:3)

实际上,您已经可以访问这些所选选项的值,但实际上您尝试从from subprocess import Popen, PIPE from time import sleep from fcntl import fcntl, F_GETFL, F_SETFL from os import O_NONBLOCK, read # run the shell as a subprocess: p = Popen(['python', 'shell.py'], stdin = PIPE, stdout = PIPE, stderr = PIPE, shell = False) # set the O_NONBLOCK flag of p.stdout file descriptor: flags = fcntl(p.stdout, F_GETFL) # get current p.stdout flags fcntl(p.stdout, F_SETFL, flags | O_NONBLOCK) # issue command: p.stdin.write('command\n') # let the shell output the result: sleep(0.1) # get the output while True: try: print read(p.stdout.fileno(), 1024), except OSError: # the os throws an exception if there is no data print '[No more data]' break 获取值,而不是optgroup,因为您使用了option确定它的值,这就是为什么你总是得到一个空白的结果值。

请参阅以下工作代码:

optgroup's #id
$("#submit").click(function (){
  $('#multiGrpSel').find("option:selected").each(function(){
        //optgroup label
        var label = $(this).parent().attr("label");
        //optgroup id
        console.log('id='+$(this).parent().attr("id"));

        // values based on each group ??
        id = $(this).parent().attr("id");
        
        
        // gets the value 
        console.log("label: "+label+" value: "+$(this).val())
        
    });


});

答案 1 :(得分:1)

值(文本值)只是其中的文本内容。

console.debug('value=' + $(this).text());

如果您想要实际值(相应的数字),请使用:

console.debug('value=' + $(this).val());