【问题标题】:How to get the selected text from form_dropdown?如何从 form_dropdown 中获取选定的文本?
【发布时间】:2014-10-20 09:08:21
【问题描述】:

我无法在 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 到数据库。

【问题讨论】:

  • 我试着检查一下。问题是我正在使用连接到数据库的 form_dropdown。
  • 那么你需要将你的数组创建为键/值数组,并将键作为文本而不是整数。
  • 但如果您想使用整数作为选项值,请参阅我评论的链接。这正是您想要的,即取出选定的选项文本,而不是选项值。
  • 没有。我想要文本而不是整数。我之前尝试查看链接但没有工作。查看我的代码,我使用了 ajax jquery 并获得了文本,并且由于我使用的是 form_open_multipart,因此该脚本不能适用于获取文本值。

标签: javascript php html codeigniter


【解决方案1】:

检查这个: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);
    });
});

【讨论】:

  • 他已经有了:dept_name: $("#department_name option:selected").text(),。但这部分与表单提交无关。
  • 但据我了解,他想通过 ajax 发送它。
  • 我正在使用 form_open_multipart() 和 form_dropdown()
  • 哦 :) 我以为他想通过表单提交按钮发送.. 呵呵
  • form_open_multipart 没关系,因为您想通过 javascript 获取文本,然后使用 ajax 发送
【解决方案2】:

交换数组值和键:

$dept_name = array_flip($dept_name);

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

$document_name 也一样。

这会从&lt;option value="id"&gt;name&lt;/option&gt; 切换到&lt;option value="name"&gt;id&lt;/option&gt;


如果需要&lt;option value="name"&gt;name&lt;/option&gt;,重建数组,得到名称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"');

结构为“name=>name”的数组也可以处理您的 ajax 请求 - 因为您使用的是 $("#department_name option:selected").text()。所以您已经在使用名称,而不是 ID。无需调整。

【讨论】:

  • 输出为0和0
  • 显示你的 $dept_name 数组:var_dump($dept_name);
  • hmm.. 数组的结构很重要array(0=&gt;name)array(name=&gt;name)。因为 form_dropdown 会将数组键作为选项 id 插入,将数组值(名称)作为选项文本插入。
猜你喜欢
  • 1970-01-01
  • 2011-04-14
  • 2014-05-26
  • 1970-01-01
  • 2011-07-10
  • 2012-04-21
  • 1970-01-01
  • 1970-01-01
  • 2014-05-14
相关资源
最近更新 更多