现场点击动态操作

时间:2013-09-30 21:55:24

标签: atk4

最近stakantin(https://stackoverflow.com/users/1875610/stakantin)帮助我提出了一个问题,即我使用此代码更改标签文本:

$标签= $这 - >添加( 'View_HtmlElement') - > setElement( 'H4') - >设置( '试验');    $ F = $这 - >添加( '形式');    $ f-> addField('Checkbox','click') - > js('click',$ label-> js() - > text('hallo world'));

我正在尝试这样做(我无法弄明白该怎么做):

我有一个标签“$ label = $ this-> add('View_HtmlElement') - > setElement('h4') - > set('100');” 我有一些带复选框的表格字段。每个复选框都有一个数字。

单击复选框以对该标签执行操作是否可行?

示例:

标签:100

field1 100复选框 field2 200复选框

如果我单击field1的复选框,则标签值为200(其原始值加上field1的100),依此类推......

我不知道我是否非常清楚购买感谢任何帮助。 亚历

1 个答案:

答案 0 :(得分:1)

示例:

    $f = $this->add('Form');
    $l1  = $f->addField('Line','l1')->set(100);
    $cb1 = $f->addField('Checkbox','cb1','100');
    $l2  = $f->addField('Line','l2')->set(300);
    $cb2 = $f->addField('Checkbox','cb2','300');

    $cb1->js('change','
        if (this.checked) {
            $(this).parent().find("label")
                .text(parseInt(100) + parseInt('.$l1->js()->val().'));
        } else {
            $(this).parent().find("label").text(100);
        }
    ');

    $cb2->js('change','
        if (this.checked) {
            $(this).parent().find("label")
                .text(parseInt(300) + parseInt('.$l2->js()->val().'));
        } else {
            $(this).parent().find("label").text("300");
        }
    ');

但是这不是添加javascript的好方法。基于我在.js文件中的示例创建js函数的方式要清晰得多。