yii2動的フォームとjavascript関数についての記事を読んだことがあります。 InsaneSkullのソリューションは完璧です。しかし、私は1つの質問があります。 例: 私はwbragancaの動的フォームを使用していますが、の変更イベント(javascript)を呼び出そうとしています。このyii2ダイナミックフォームwbragancaは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))',
]
]) ?>
まずのような私のコードは、私は、Info機能がまだ定義されていないので、それがエラーを与えた
<?php
$script = <<< JS
function Info(item){
var index = item.attr("id").replace(/[^0-9.]/g, "");
alert(index);
};
JS;
$this->registerJs($script);
?>
以下のような情報機能を登録してみてください。
第2に、私はAppAssetに登録していました。
私の質問:違いは何ですか? *(私はそれが範囲だと思う)。 AppAssetでレジスタの横に関数を定義する方法は?
ウィジェットオプションではなく、スクリプトにイベント変更ハンドラを登録することもできます。 $( '。form-control')を使ってみてください。( 'change'、Info) –
うん、うまくいきます。ありがとう。どうして? –
よろしくお願いいたします。ウィジェットオプションで変更ハンドラを定義すると、widgetはこのハンドラを関数の前にレンダリングするためです。 –