Ich habe einige Artikel über yii2 dynamische Form und JavaScript-Funktion gelesen. Die Lösung von InsaneSkull ist perfekt. Aber ich habe eine Frage. Beispiel: Ich verwende dynamische Formular von wbraganca und versuchen, Funktion onchange Ereignis (Javascript) aufrufen. Mein Code wie dieseryii2 dynamische Form wbraganca Aufruf Javascript Funktion
<?= $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))',
]
]) ?>
Zuerst versuchen i Info-Funktion wie registrieren unter
<?php
$script = <<< JS
function Info(item){
var index = item.attr("id").replace(/[^0-9.]/g, "");
alert(index);
};
JS;
$this->registerJs($script);
?>
Es gab Fehler, weil Info noch nicht definierte Funktion.
Zweitens registrierte ich in AppAsset und es funktionierte.
Meine Frage: Was sind die Unterschiede? * (Ich denke, es war der Umfang). Wie definiert man die Funktion neben Register in AppAsset?
Sie können auch Event Change Handler in Ihrem Skript, nicht in Widget-Optionen registrieren. Versuchen Sie $ ('. Form-control') zu verwenden. On ('change', Info) –
Ja, es funktioniert. Vielen Dank. Warum? –
Sie sind willkommen. Wenn Sie den Änderungs- handler in Widgetoptionen definieren, rendern Sie diesen Handler vor dem Skript mit Ihrer Funktion. –