Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据列表中选择的内容设置复选框的值_Php_Javascript_Content Management System_Phpbms - Fatal编程技术网

Php 根据列表中选择的内容设置复选框的值

Php 根据列表中选择的内容设置复选框的值,php,javascript,content-management-system,phpbms,Php,Javascript,Content Management System,Phpbms,我在CMS系统的范围内工作,该系统定义了某些字段,这些字段可用于生成PHP应用程序中使用的表单 列表函数具有以下签名: function inputBasicList ($id,$value = "",$list = array(), $displayName = NULL, $displayLabel = true) function inputCheckbox($id,$value = false, $displayName = NULL, $disabled = false, $disp

我在CMS系统的范围内工作,该系统定义了某些字段,这些字段可用于生成PHP应用程序中使用的表单

列表函数具有以下签名:

function inputBasicList ($id,$value = "",$list = array(), $displayName = NULL, $displayLabel = true)
function inputCheckbox($id,$value = false, $displayName = NULL, $disabled = false, $displayLabel = true)
我这样用它:

$theinput = new inputBasicList("type",$therecord["paymenttype"],array("Cash"=>"cash","Credit"=>"credit"), "Payment Type");
同样,还有一个复选框,其签名为:

function inputBasicList ($id,$value = "",$list = array(), $displayName = NULL, $displayLabel = true)
function inputCheckbox($id,$value = false, $displayName = NULL, $disabled = false, $displayLabel = true)
我这样用它

$theinput = new inputCheckbox("paid", $therecord["paid"], "Paid");
我想做的是,如果列表设置为贷记而不是默认的现金,则自动将复选框设置为true/checked

我认为CMS系统不允许使用任何内置函数来实现这一点,我对添加任何javascript都持谨慎态度

仅使用PHP就可以实现这一点吗

否则,javascript做这样的事情需要多复杂

编辑:

从phpBMS表单生成的HTML

<p class="big"><label for="type" class="important">Payment Type</label>
<br />
<select name="type" id="type"  class="important" > 
<option value="cash"  >Cash</option>
<option value="credit"  >Credit</option>
</select>
</p>
<p class="big">
<input type="checkbox" id="paid" name="paid" value="1" class="radiochecks"  /> 
<label id="paidLabel" for="paid" >Paid</label>
</p>

付款类型
现金 信用

支付


在javascript中应该相当简单。您可以在列表的onchange函数上附加一个事件侦听器,并在该函数中设置checkbox的值。

仅使用PHP是不可能的,因为PHP是在您的服务器上运行的。您需要一些在客户端上运行的代码

我认为第一个参数
$id
用作元素的
id
属性?如果我错了,纠正我。如果是这样,您可以使用jQuery JavaScript库执行以下操作:

jQuery(function($){
  $('#type').change(function(){
    if ($(this).val() == "credit") {
      $('#paid').attr('checked','checked');
    } else {
      $('#paid').removeAttr('checked');
    }
  });
});
UDPATE BMS正在使用Mootools,JavaScript应该像这样在Mootools中工作:

window.addEvent('domready', function(){
  $('type').addEvent('change',function(){
    if($(this).get('value') == 'credit') {
      $('paid').set('checked','checked');
    } else {
      $('paid').removeProperty('checked');
    }
  });
});
echo '<script type="text/javascript">jQuery.noConflict();</script>';
我建议您使用这个代码段的mootools版本,但出于您的兴趣,如果您想安装jQuery,可以将添加到。然后,您可以编辑以包括以下内容:

在最后一个
$tempjsarray[]之后添加:

$tempjsarray[] = "common/javascript/jquery.js";
然后在
$phpbms->showJsIncludes()之后您需要包括这一点,因此jQuery除了使用工具外不会出现任何问题:

window.addEvent('domready', function(){
  $('type').addEvent('change',function(){
    if($(this).get('value') == 'credit') {
      $('paid').set('checked','checked');
    } else {
      $('paid').removeProperty('checked');
    }
  });
});
echo '<script type="text/javascript">jQuery.noConflict();</script>';
echo'jQuery.noConflict();';


如果这不起作用,您应该发布html输出的外观。

它不是标准的html列表,而是CMS定义的自定义列表。我想我无法附加侦听器。您好,$id是指字段名。不过,我不能简单地将jquery导入现有的CMS系统……为什么你不能这样做呢?我使用过很多CMS,它们都允许使用任何你想要的javascript!你用的是什么CMS?它是BMS而不是CMS,phpBMS。这是表单的模板:我不认为我可以简单地包含jquery,谢谢你的回答,我真的很感激。这似乎是一个愚蠢的问题,但我应该将您提供的moo工具示例放在哪里呢?似乎没有任何地方可以为表单添加JS代码模板,我也厌倦了在一个部分中添加……您可以创建自己的
some_name.JS
,并像我前面为jQuery所描述的那样添加。或者你在
标签之间写代码,没有什么好担心的。