yii2 dynamic-form wbraganca调用javascript函数

时间:2017-03-14 02:27:13

标签: javascript jquery yii2

我已经阅读了一些关于yii2动态表单和javascript函数的文章。 InsaneSkull给出的解决方案是完美的。但我有一个问题。 例如: 我正在使用来自wbraganca的动态表单并尝试调用函数 onchange事件(javascript)。我的代码就像这样

    <?= $form->field($detail, "[{$i}]qty")->widget(\yii\widgets\MaskedInput::className(),
[
        'clientOptions' => [
                'alias' => 'numeric',
                'groupSeparator' => ',',
                'digits' => 0,
                'autoGroup' => true,
                'removeMaskOnSubmit' => true,
                'rightAlign' => false,                                                                  
        ],
        'options' => [
                'class' => 'form-control',
                'onchange' => 'Info($(this))',                                                                  
        ]                                                               
]) ?>

首先,我尝试注册以下信息功能

<?php
$script = <<< JS

function Info(item){
   var index  = item.attr("id").replace(/[^0-9.]/g, "");        
   alert(index);        
};

JS;
$this->registerJs($script);
?>

它给出了错误,因为Info函数尚未定义。

其次,我在AppAsset中注册并且它有效。

我的问题:有什么区别? *(我认为这是范围)。 如何定义AppAsset中注册旁边的功能?

1 个答案:

答案 0 :(得分:1)

你在哪里注册上面的脚本?如果在使用widget之后的视图中,JS注册的默认位置是POS_READY public void registerJs ( $js, $position = self::POS_READY, $key = null )如果要在使用小部件之后放置脚本,请尝试使用位置POS_BEGIN或POS_HEAD。否则,您可以覆盖窗口小部件类,并将此脚本放入窗口小部件的init方法中,该方法在run方法呈现窗口小部件之前执行。