【问题标题】:Setting the value of a checkbox based on what is selected in a list根据列表中选择的内容设置复选框的值
【发布时间】:2010-07-01 07:59:55
【问题描述】:

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

列表函数有签名:

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");

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

【问题讨论】:

    标签: php javascript content-management-system phpbms


    【解决方案1】:

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

    我会推荐使用这个 sn-p 的 mootools 版本,但只是为了你的兴趣,如果你想安装 jQuery,你可以将 jquery.js 添加到 phpbms/common/javascript 中。然后您可以编辑 phpbms/header.php 以包含以下内容:

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

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

    然后在$phpbms-&gt;showJsIncludes(); 之后你需要包含这个,所以除了mootools 之外,jQuery 可以正常工作:

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

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

    【讨论】:

    • 嗨,是的 $id 是指字段名称。不过,我不能简单地将 jquery 导入现有的 CMS 系统......
    • 你为什么不能这样做?我使用了大量的 CMS,它们都允许使用任何你想要的 javascript!您使用的是什么 CMS?
    • 它是一个 BMS,而不是一个 CMS,phpBMS。这是表单的模板:phpbms.org/browser/trunk/phpbms/modules/sample/… 我不认为我可以轻松地包含 jquery
    • 您好,感谢您的回答,非常感谢。这似乎是一个愚蠢的问题,但是我应该将您提供的 moo 工具示例放在哪里?似乎真的没有任何地方可以为表单添加 JS 代码模板,而且我厌倦了在
    • 您可以创建自己的some_name.js 并按照我在上面描述的 jQuery 内容添加。或者你在&lt;script&gt;标签之间写代码,没什么好担心的。
    【解决方案2】:

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

    【讨论】:

    • 不是标准的HTML列表,而是CMS定义的自定义列表。我不认为我可以附加一个听众。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多