在表单选择上更改样式表onChange =“change()”

时间:2017-09-05 07:51:09

标签: php jquery css forms

因此,当用户选择表单中的下拉框到另一个时,我会尝试更改样式表。

我的代码如下。

$styles = array(
    "style",
    "dark"
);

$style = $_POST["style"];

if (!in_array($style, $styles))
{
     //we default back to the first in the array, this prevents accidental hardcoding;
     $style = $styles[0]; 
}

$css = "/templates/streamer/css/$style.css";

if (!file_exists($css)){
    //something terrible happend;
    #echo "missing style $css";
}

function showOptions() {
    echo '<form id="selectStyle" action="#" method="post">';
    echo '<select id="style" onChange="change()">';

    global $styles;

    foreach ($styles as &$value){
        echo '<option value="'.$value.'">'.$value.'</option>';
    }

    echo '</select></form>';
}

然后我的链接rel如下:

<link rel="stylesheet" href="<?php echo $css; ?>"/>

然后我调用jquery脚本:

function change() {
    document.getElementById("selectStyle").submit();
}

然后我调用该函数来显示表单:

<?php showOptions(); echo $css; ?>

所以我的问题是,一旦我选择了“黑暗”的css文件,页面就会刷新并且不会更改样式表。

我也尝试了许多其他替代方法,他们也没有工作。但我写的这个方法似乎是更适合我需要的选择。

由于

2 个答案:

答案 0 :(得分:1)

我认为你在PHP和Javascript之间混合

这里:

echo '<select id="style" onChange="change()">';

您需要使用PHP为联系指定name属性 - 或者说 -

因此需要更改为:

echo '<select name="style" onChange="change()">';

答案 1 :(得分:0)

对于其他有类似问题的人,再次感谢@hassan帮助我。

我现在刚刚编辑了表单并为该函数添加了一个echo:

function showOptions() {
    echo '<form id="selectStyle" action="#" method="post">';
    echo '<select name="style" onChange="change()">';
    echo '<option disabled selected value> -- select a style -- </option>';
    global $styles;

foreach ($styles as &$value){
    echo '<option value="'.$value.'">'.$value.'</option>';
    }
    echo '</select></form>';
}

所以我添加的行是选择样式的额外选项:

echo '<option disabled selected value> -- select a style -- </option>';

所以现在这允许我在我的两种风格之间切换。我将添加更多款式可供选择。但是在我制作其他样式文件之前需要首先使用它。

再次感谢大家的帮助和哈桑的答案:)