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

时间:2010-07-01 07:59:56

标签: php javascript content-management-system phpbms

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

list函数具有签名:

function inputBasicList ($id,$value = "",$list = array(), $displayName = NULL, $displayLabel = true)

我这样使用它:

$theinput = new inputBasicList("type",$therecord["paymenttype"],array("Cash"=>"cash","Credit"=>"credit"), "Payment Type");

同样,有一个复选框,其中包含签名:

function inputCheckbox($id,$value = false, $displayName = NULL, $disabled = false, $displayLabel = true)

我这样使用它

$theinput = new inputCheckbox("paid", $therecord["paid"], "Paid");

我想做的是,如果列表设置为credit而不是默认现金,则自动将复选框设置为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>

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

仅使用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');
    }
  });
});

我建议使用此代码段的mootools版本,但只是为了您的兴趣,如果您想安装jQuery,可以将jquery.js添加到phpbms/common/javascript。然后,您可以修改phpbms/header.php以包含此内容:

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

$tempjsarray[] = "common/javascript/jquery.js";

然后在$phpbms->showJsIncludes();之后你需要包含这个,所以除了mootools之外jQuery没有问题:

echo '<script type="text/javascript">jQuery.noConflict();</script>';

如果这不起作用,你应该发布html输出的样子。