我在一个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");我想要做的是,如果列表设置为信用而不是默认现金,则自动将复选框设置为真/选中。
我不认为CMS系统允许使用任何内置函数来做到这一点,并且我对添加任何javascript都很谨慎。
仅仅使用PHP就可以做到这一点吗?
否则,javascript要做这样的事情会有多复杂呢?
编辑:
从phpBMS表单生成的超文本标记语言
<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>发布于 2010-07-01 16:21:16
只使用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输出的样子。
发布于 2010-07-01 16:20:03
这在javascript中应该相当简单。您可以在列表的onchange函数上附加一个事件侦听器,并在该函数中设置checkbox的值。
https://stackoverflow.com/questions/3155984
复制相似问题