0

我有一个令人困惑的问题,但希望你能明白我的意思:

在我的网站中,我正在尝试实现一个选择框,该选择框根据前一个选择框的值进行更新。为此,我使用了一个接受值的 javascript。例如,选择框中的选项如下所示:

<option value="22"> Apple </option>

我需要该值来过滤选择框,但在我的 PHP 脚本中,我需要获取“Ap​​ple”文本。有没有办法做到这一点?

很抱歉这个菜鸟问题,但网络开发对我来说是新的。

编辑:

这是我用于过滤第二个选择框的 java 脚本:

$("#select1").change(function() {
                           if ($(this).data('options') == undefined) {
                               /*Taking an array of all options-2 and kind of embedding it on the select1*/
                               $(this).data('options', $('#select2 option').clone());
                           }
                           var id = $(this).val();
                           var options = $(this).data('options').filter('[value=' + id + ']');
                           $('#select2').html(options);
                       });

如果我尝试将过滤器函数中的这个“值”更改为其他属性,它由于某种原因不起作用。我根本不懂 JavaScript。

4

5 回答 5

1

尝试这个

var pName = document.getElementById('selectname');

var name = pName.options[pName.selectedIndex].text;

通过隐藏的表单字段或 ajax 请求将名称值发送到您的 php 脚本,它将包含选项的文本

于 2013-08-22T10:11:32.270 回答
1

Apple没有传递给服务器,只有你的值,在这种情况下23。您可以看到,当您将公式方法更改为 时GET,它看起来像script.php?some_select=23.

解决它的两种解决方案:

第一个(简单的)将是:

<option value="Apple" data-filterid="22"> Apple </option>

在你的 js 中:

var options = $(this).data('options').filter('[data-filterid=' + id + ']');

所以你进入Apple你的 php 脚本而不是22. 然后,您可以通过访问data-filterid而不是value.

第二种解决方案是存储一个关联字典,将值映射到数字,例如:

<?php
   $mapped = array(22 => "Apple",  23=>"Orange");
   $value = $mapped[$_GET['option_name']];
于 2013-08-22T10:11:41.653 回答
1

尝试这个

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

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

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

var text = getSelectedText('test');

或者

this.options[this.selectedIndex].innerHTML
于 2013-08-22T10:17:28.947 回答
1

fruits_array.php

<?php
$fruits= array(
22 => 'apple' ,
23 => 'orange'
);

form_handler.php

if( isset($_POST['chosen_fruit']) && (int)$_POST['chosen_fruit'] > 0 ){
include 'fruits_array.php';
echo you chose ' . $fruits[$_POST['chosen_fruit'];
}

pick_your_fruit.php

<form action='form_handler.php' method= POST>
<select name='chosen_fruit'>
<?php
include 'fruits_array.php';

foreach($fruits as $key=$fruit)
echo '<option value=' . $key . '>' . $fruit .'</option>' . PHP_EOL ; 
?>
<input type=submit />
</form>

试试这个。将一系列水果放在一个地方。将其包含在您需要的地方。如有必要,该数组可以来自数据库。

使用数组来

  1. 生成表单元素
  2. 生成消息

但是,本质上,在表单和表单处理程序之间传输键的编号可以缓解验证传入数据的棘手问题。

干燥。不要重复自己。现在,如果您有 99 个水果,并且添加了另一个,那么您只会在一个地方添加它。

(缺少的主要是处理不存在的水果编号,这可能意味着有人在篡改您的输入表单,留待另一个问题吧?)

于 2013-08-22T10:21:01.410 回答
1

像这样试试

<form method="post" action="getvalue.php">
    <select name="fruit">
        <option value="">select the option</option>
        <option value="1">Apple</option>
        <option value="2">Banana</option>
        <option value="3">Mango</option>
    </select>
</form>


<?php
$option = array('1'=>'Apple','2'=>'Banana','3'=>'Mango');
echo $option[$_POST['fruit']];

?>
于 2013-08-22T10:21:45.017 回答