我在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>
答案 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输出的样子。