在选项列表中添加php错误

在选项列表中添加php错误,php,wordpress,Php,Wordpress,下面的代码是cart66 WordPress插件php文件的一部分。例如,当我列出项目的选项时 T恤衫 数量:1 选项:红色、黄色、蓝色 第一个选项总是我在列表中放在第一位的。因此,当我的客户不注意并添加到购物车而不查看列表时,他们会订购红色。我在顶部添加了“请选择一种模式”选项,但他们仍然将其添加到购物车和结帐中。是否有一种方法可以添加一个选项,并在选择该选项时使其出现错误 private function _buildOptionList($optNumber) { $selec

下面的代码是cart66 WordPress插件php文件的一部分。例如,当我列出项目的选项时

T恤衫 数量:1 选项:红色、黄色、蓝色

第一个选项总是我在列表中放在第一位的。因此,当我的客户不注意并添加到购物车而不查看列表时,他们会订购红色。我在顶部添加了“请选择一种模式”选项,但他们仍然将其添加到购物车和结帐中。是否有一种方法可以添加一个选项,并在选择该选项时使其出现错误

  private function _buildOptionList($optNumber) {
    $select = '';
    $optionName = "options_$optNumber";
    if(strlen($this->$optionName) > 1) {
      $select = "\n<select name=\"options_$optNumber\" id=\"options_$optNumber\" class=\"cart66Options options_$optNumber\">";
      $opts = split(',', $this->$optionName);
      foreach($opts as $opt) {
        $opt = str_replace('+$', '+ $', $opt);
        $opt = trim($opt);
        $optDisplay = str_replace('$', CART66_CURRENCY_SYMBOL, $opt);
        $select .= "\n\t<option value=\"" . htmlentities($opt) . "\">$optDisplay</option>";
      }
      $select .= "\n</select>";
    }
    return $select;
  }
private function\u buildOptionList($optNumber){
$select='';
$optionName=“选项\选项编号”;
如果(strlen($this->$optionName)>1){
$select=“\n”;
$opts=split(“,”,$this->$optionName);
foreach($opts as$opt){
$opt=str_replace(“+$”、“+$”、$opt);
$opt=修剪($opt);
$optDisplay=str_replace(“$”,货币符号,$opt);
$select.=“\n\t$optDisplay”;
}
$select.=“\n”;
}
返回$select;
}

您可以使用jQuery和Javascript显示警报框

<script type="text/javascript">
    $(function() {
        $('#options').change(function() {
            if ($(this).attr('value') == "Please choose a pattern") {
                alert("Please pick a color!");
            }
        });
    });
</script>

$(函数(){
$('#选项')。更改(函数(){
如果($(this.attr('value')==“请选择一种模式”){
警告(“请选择一种颜色!”);
}
});
});
确保在页面中包含jQuery的最新副本,并将selectbox的id=”“值更改为options(不带任何PHP变量)


另外,如果用户提交了有效的颜色,请不要忘记仍然在PHP中进行检查。这样做是因为如果用户禁用了Javascript,他仍然可以选择“请选择模式”项。

您可以使用jQuery和Javascript显示警报框

<script type="text/javascript">
    $(function() {
        $('#options').change(function() {
            if ($(this).attr('value') == "Please choose a pattern") {
                alert("Please pick a color!");
            }
        });
    });
</script>

$(函数(){
$('#选项')。更改(函数(){
如果($(this.attr('value')==“请选择一种模式”){
警告(“请选择一种颜色!”);
}
});
});
确保在页面中包含jQuery的最新副本,并将selectbox的id=”“值更改为options(不带任何PHP变量)


另外,如果用户提交了有效的颜色,请不要忘记仍然在PHP中进行检查。这样做是因为如果用户禁用了Javascript,他仍然可以选择“请选择模式”项。

这是一个商业插件(尽管是免费的“lite”版本)。我首先建议查看他们的支持论坛:

如果您不介意自己编辑PHP,那么也许我可以提供一些建议

例如,您可以先选择空白选项,然后在选择空白项目时,让验证代码拒绝将项目添加到卡中。粘贴的代码看起来像是将选项列表作为逗号分隔的字符串。因此,您可以通过以“、例如”、“红、黄、蓝”开头的字符串来拥有一个空白选项。但这不会对用户非常友好,最好将第一个选项命名为“Select Option”,并将其值设置为“”。由于上述代码不允许这样做,您可以更改该代码,例如:

  private function _buildOptionList($optNumber) {
    $select = '';
    $optionName = "options_$optNumber";
    if(strlen($this->$optionName) > 1) {
      $select = "\n<select name=\"options_$optNumber\" id=\"options_$optNumber\" class=\"cart66Options options_$optNumber\">";
      $opts = split(',', $this->$optionName);
      foreach($opts as $opt) {
        if($opt == "<blank>") {
          $opt = "";
          $optDisplay = "Select One";
        } else {
          $opt = str_replace('+$', '+ $', $opt);
          $opt = trim($opt);
          $optDisplay = str_replace('$', CART66_CURRENCY_SYMBOL, $opt);
        }
        $select .= "\n\t<option value=\"" . htmlentities($opt) . "\">$optDisplay</option>";
      }
      $select .= "\n</select>";
    }
    return $select;
  }
private function\u buildOptionList($optNumber){
$select='';
$optionName=“选项\选项编号”;
如果(strlen($this->$optionName)>1){
$select=“\n”;
$opts=split(“,”,$this->$optionName);
foreach($opts as$opt){
如果($opt==“”){
$opt=“”;
$optDisplay=“选择一个”;
}否则{
$opt=str_replace(“+$”、“+$”、$opt);
$opt=修剪($opt);
$optDisplay=str_replace(“$”,货币符号,$opt);
}
$select.=“\n\t$optDisplay”;
}
$select.=“\n”;
}
返回$select;
}
然后你可以选择“红、黄、蓝”


您可能还需要修改cart66的验证代码,以确保它拒绝空白选择。我不知道它是否只是通过查看上面的代码片段就可以做到。

这是一个商业插件(尽管有免费的“lite”版本)。我首先建议查看他们的支持论坛:

如果您不介意自己编辑PHP,那么也许我可以提供一些建议

例如,您可以先选择空白选项,然后在选择空白项目时,让验证代码拒绝将项目添加到卡中。粘贴的代码看起来像是将选项列表作为逗号分隔的字符串。因此,您可以通过以“、例如”、“红、黄、蓝”开头的字符串来拥有一个空白选项。但这不会对用户非常友好,最好将第一个选项命名为“Select Option”,并将其值设置为“”。由于上述代码不允许这样做,您可以更改该代码,例如:

  private function _buildOptionList($optNumber) {
    $select = '';
    $optionName = "options_$optNumber";
    if(strlen($this->$optionName) > 1) {
      $select = "\n<select name=\"options_$optNumber\" id=\"options_$optNumber\" class=\"cart66Options options_$optNumber\">";
      $opts = split(',', $this->$optionName);
      foreach($opts as $opt) {
        if($opt == "<blank>") {
          $opt = "";
          $optDisplay = "Select One";
        } else {
          $opt = str_replace('+$', '+ $', $opt);
          $opt = trim($opt);
          $optDisplay = str_replace('$', CART66_CURRENCY_SYMBOL, $opt);
        }
        $select .= "\n\t<option value=\"" . htmlentities($opt) . "\">$optDisplay</option>";
      }
      $select .= "\n</select>";
    }
    return $select;
  }
private function\u buildOptionList($optNumber){
$select='';
$optionName=“选项\选项编号”;
如果(strlen($this->$optionName)>1){
$select=“\n”;
$opts=split(“,”,$this->$optionName);
foreach($opts as$opt){
如果($opt==“”){
$opt=“”;
$optDisplay=“选择一个”;
}否则{
$opt=str_replace(“+$”、“+$”、$opt);
$opt=修剪($opt);
$optDisplay=str_replace(“$”,货币符号,$opt);
}
$select.=“\n\t$optDisplay”;
}
$select.=“\n”;
}
返回$select;
}
然后你可以选择“红、黄、蓝”


您可能还需要修改cart66的验证代码,以确保它拒绝空白选择。通过查看上面的代码片段,我不知道它是否能做到这一点。

有几种方法可以做到这一点。最简单的方法是,使用普通Javascript,将其添加到
元素:
有几种方法可以做到这一点。最简单的方法是,使用普通Javascript,将其添加到
元素:
这不会抓住主要问题,即用户不更改select的值。事件需要绑定到提交