Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
yii2动态表单wbraganca调用javascript函数_Javascript_Jquery_Yii2 - Fatal编程技术网

yii2动态表单wbraganca调用javascript函数

yii2动态表单wbraganca调用javascript函数,javascript,jquery,yii2,Javascript,Jquery,Yii2,我读过一些关于yii2动态表单和javascript函数的文章。英萨斯库尔给出的解决方案是完美的。但我有一个问题。 例子: 我正在使用wbraganca中的动态表单,并尝试调用onchange事件javascript函数。我的代码是这样的 <?= $form->field($detail, "[{$i}]qty")->widget(\yii\widgets\MaskedInput::className(), [ 'clientOptions' =>

我读过一些关于yii2动态表单和javascript函数的文章。英萨斯库尔给出的解决方案是完美的。但我有一个问题。 例子: 我正在使用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中定义register旁边的函数?

您在哪里注册上面的脚本?如果在使用后查看小部件中,JS注册的默认位置是POS_READY public void registerJs$JS,$position=self::POS_READY,$key=null如果要在使用后放置脚本小部件,请尝试使用position POS_BEGIN或POS_HEAD。否则,您可以重写小部件类并将此脚本放入小部件的init方法中,该方法在运行方法呈现的小部件之前执行。

您还可以在脚本中注册事件更改处理程序,而不是在小部件选项中注册。尝试使用$'.form控件。在“更改”上,欢迎使用。因为当您在小部件选项中定义更改处理程序时,小部件会在使用函数编写脚本之前呈现此处理程序。