如何从form_dropdown中获取所选文本?

时间:2014-10-20 09:08:22

标签: javascript php html codeigniter

我无法在form_dropdown中获取文本,它始终返回选项值。请帮忙。

查看

<?php echo form_open_multipart('upload/do_upload');?>
<?php 
    $cont ='';
    $dept='';
    foreach($level->result() as $row) {
        $cont = $row->userlevel;
        $dept = $row->department;
    }
    if(strtoupper($cont)=="USER") {
        echo "<strong>".$dept."&emsp;</strong>";
    }
    else {
        echo form_dropdown('department_name', $dept_name,'','id="department_name"');
    } 
?>
<br/><br/>
<div class="btn-group">
    <span id="status2"><?php echo form_dropdown('document_name', $document_name, '', 'id="document_name"'); ?></span>
</div>
<br/><br/>
<label for="file">Select File To Upload:</label>
<input type="file" name="userfile" multiple class="btn btn-file"/>
</br></br>
<input type="submit" value="Upload File" class="btn btn-primary"/>
<?php echo form_close(); ?>

<script>
    window.onload = function() {
        var form_data = {
            dept_name: "<?php echo $dept; ?>",
            ajax: 1
        };
        $.ajax({
            url:"<?php echo site_url("document/document_dept_received"); ?>",
            data:form_data,
            type:'POST',
            success: function(msg){
                document.getElementById("status2").innerHTML = msg;
            }
        });
    };

    $("#department_name").change(function() {
        var form_data = {
            dept_name: $("#department_name option:selected").text(),
            ajax: 1
        };
        $.ajax({
            url:"<?php echo site_url("document/document_dept_received"); ?>",
            data:form_data,
            type:'POST',
            success: function(msg){
                document.getElementById("status2").innerHTML = msg;
            }
        });
    });
</script>

控制器

$upload_data = $this->upload->data();
$data['thumbnail_name'] = $upload_data['raw_name']. '_thumb' .$upload_data['file_ext'];
$file_array = array(
    'image'         => $data['thumbnail_name'],
    'image_name'    => $upload_data['file_name'],
    //'description'   => "",
    'date_created'  => date('Y-m-d H:i:s', now()),
    'date_modified' => date('Y-m-d H:i:s', now()),
    'author'        => $this->session->userdata('username'),
    'size'          => $upload_data['file_size'],
    'type'          => $upload_data['image_type'],
    'width'         => $upload_data['image_width'],
    'height'        => $upload_data['image_height'],
    'document_name' => $this->input->post("document_name"),
    'department'    => $this->input->post("department_name"),
    //'notes'         => "",
);

当我试着这个......

print_r($this->input->post("document_name"));
print_r($this->input->post("department_name"));

它显示1和1 ...

我想要的是文本而不是选项的id或值。 示例:我选择了IT部门和文件夹1,它将IT部门和文件夹1显示/记录到数据库。

2 个答案:

答案 0 :(得分:0)

交换数组值和键:

$dept_name = array_flip($dept_name);

form_dropdown('department_name', $dept_name,'','id="department_name"');

$ document_name相同。

这从<option value="id">name</option>切换到<option value="name">id</option>


如果您需要<option value="name">name</option>,请重建阵列以获得名称2名称关系。

$dept_names2 = array();

foreach($dept_name as $item_id => $item_name)
{
    $dept_names2[$item_name] = $item_name; // name as key and value
}

form_dropdown('department_name', $dept_names2,'','id="department_name"');

具有结构&#34; name =&gt; name&#34;的数组也会使用您的ajax请求 - 因为您使用的是$("#department_name option:selected").text()。所以你已经在使用名称,而不是ID。无需调整。

答案 1 :(得分:0)

请检查:http://jsfiddle.net/Lev0sjjx/2/

注意: jquery代码仅用于演示目的

<强> HTML

<select id="test">
    <option value="1">Test One</option>
    <option value="2">Test Two</option>
</select>

Javascript / jQuery

function getSelectedText(elementId) {
    var elt = document.getElementById(elementId);

    if (elt.selectedIndex == -1)
        return null;

    return elt.options[elt.selectedIndex].text;
}

$(function() {
    $('#test').change(function() {
        var text = getSelectedText('test');
        alert(text);
    });
});