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