Php 根据列表中选择的内容设置复选框的值
我在CMS系统的范围内工作,该系统定义了某些字段,这些字段可用于生成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
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所描述的那样添加。或者你在
标签之间写代码,没有什么好担心的。