【问题标题】:Implementing style chained select boxes in PHP在 PHP 中实现样式链式选择框
【发布时间】:2011-11-17 21:16:32
【问题描述】:

我一直在尝试在 PHP 中实现样式链接选择框太久了,我真的不明白出了什么问题。以下是文件:http://cl.ly/3j002v1E3s3G0c2O2B1M(文件很多,抱歉发链接)。

选择第一个时选择框消失。

谁能告诉我为什么不工作?谢谢。

【问题讨论】:

  • 您应该向我们提供有关您的问题的更多信息(并更改标题)o.w.版主将很快关闭此问题
  • 就是这个问题,不知道是什么问题。更改选择框时,它们都会消失。不,它不是病毒。
  • 可能在标题中描述了编程语言 (HTML/JS?)。还有到底是什么问题。当我转到该页面时,一切都对我有用
  • 你没有具体说明你试图让它做什么和什么不起作用。
  • 基本上我希望用户能够更改一个文本框,并根据该值更改下一个选择框的值。例如他们在第一个框中选择水果,第二个框中的值变为香蕉、橙子和苹果。我已经尝试了很多不同的方法来做到这一点,这些方法很有效,但是当尝试将样式应用于它们时,它会破坏它。在这种方法(对我来说)更改第一个选择框时,它们都消失了。这个是使用 php 来改变值和 jquery 来改变样式。

标签: php javascript jquery forms


【解决方案1】:

您的下拉菜单会因为

而消失
$('select[name="firmware"]').parent().remove();

您的select.parent()<div id="formcontainer">,这是您下拉选择的容器;所以你从页面中删除该元素,然后将它们删除。


编辑 如果您在选择其他手机时尝试从固件下拉菜单中删除选项,请使用

$('select[name="firmware"] option').remove();

$('select[name="firmware"]').empty();

编辑 2 您似乎也无法从 ajax 调用返回的数据中正确填充固件下拉列表,您可以使用

$('select[name="firmware"]').html(data);

$('select[name="firmware"]').append(data);

如果您只是像这样从 ajax 调用返回选项 html 代码

<option value="1.0">1.0</option>
<option value="2.0">2.0</option>

但是 selectBox 插件的演示页面建议更多类似

$('select[name="firmware"]').selectBox('options', {
    'Opt Group 1': {
        '1': 'Value 1',
        '2': 'Value 2',
        '3': 'Value 3',
        '4': 'Value 4',
        '5': 'Value 5'
    },
    'Opt Group 2': {
        '6': 'Value 6',
        '7': 'Value 7',
        '8': 'Value 8',
        '9': 'Value 9',
        '10': 'Value 10'
    },
    'Opt Group 3': {
        '11': 'Value 11',
        '12': 'Value 12',
        '13': 'Value 13',
        '14': 'Value 14',
        '15': 'Value 15'
    }
});

因此,如果您以格式返回数据

{
    'Opt Group 1': {
        '1': 'Value 1',
        '2': 'Value 2',
        '3': 'Value 3',
        '4': 'Value 4',
        '5': 'Value 5'
    }
}

然后你可以$('select[name="firmware"]').selectBox('options', data);


结论

基本上,如果您的 findFormware.php 代码只返回选项 html 代码,而没有其他类似的代码

<option value="1.0">1.0</option>
<option value="2.0">2.0</option>

您的手机下拉菜单的 JavaScript 代码应该是

$('select[name="phone"]').change(function(){
    var phoneId = this.value;

    $('select[name="firmware"]').empty();

    $.ajax({
        url: "findFirmware.php?phone=" + phoneId,
        success: function(data) { 
            $('select[name="firmware"]').append(data);
        }
    });
});

【讨论】:

  • 哇,我怎么没注意到……谢谢。这些值似乎没有改变:/
  • 通过 ajax 调用固件的值?
  • 是的,我不太确定我现在在做什么。当我选择它时,会出现一个空白,并且没有任何选项更改。
  • 很抱歉很烦人,但我将如何在现有代码中实现它,它是否适用于样式?感谢您的帮助。
  • 您的 findFirmware.php 只需将选项 html 代码返回给 ajax 调用,以便您可以使用我的 Edit 2 中的代码将该数据附加到下拉列表中回答
猜你喜欢
  • 2011-02-18
  • 1970-01-01
  • 1970-01-01
  • 2014-09-11
  • 2023-04-11
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多