簡體   English   中英

Yii2按鈕點擊匿名功能

[英]Yii2 button onclick anonymous function

我是Yii2的新手,我正在努力通過按Yii2按鈕來觸發匿名功能。 下面是6個樣本,其中前兩個是好的。 但這並不是我想要的。 我想知道如何讓一個匿名函數工作,比如“Button 3”和“Button 5”的情況。 我測試了如何通過Controller進行函數調用,這樣可以正常工作,但這不是我想要的。 非常感謝你的幫助 - 謝謝!

// This works
$button1 = Button::begin ( 
[
'label' => 'Button 1',
'options' => [
    'class' => 'btn btn-primary',
    'onclick' => 'alert("Button 1 clicked");',
    ],
]);
$button1->run();

// This works
echo Html::button('Button 2', [ 'class' => 'btn btn-primary', 'onclick' => 'alert("Button 2 clicked");' ]);

// This DOES NOT work
echo Html::button('Button 3', [ 'class' => 'btn btn-primary', 'onclick' => 'function ( $event ) { alert("Button 3 clicked"); }' ]);

// This DOES NOT work
$button4 = Button::begin ( 
[
'label' => 'Button 4',
'options' => [
    'class' => 'btn btn-primary',
    // 'onclick' => 'alert("Button 1 clicked");',
    ],
]);
$button4->on('onclick', 'alert("Button 4 clicked");' );
$button4->run();


// This DOES NOT work
$button5 = Button::begin ( 
[
'label' => 'Button 5',
'options' => [
    'class' => 'btn btn-primary',
    'onclick' => 'function ( $event ) { alert("Button 5 clicked"); }',
    ],
]);
$button5->run();

// This DOES NOT work
$button6 = Button::begin ( 
[
'label' => 'Button 6',
'options' => [
    'class' => 'btn btn-primary',
    //'onclick' => 'function ( $event ) { alert("Button 4 clicked"); }',
    ],
]);
$button6->on('onclick', 'function ( $event ) { alert("Button 6 clicked"); }' );
$button6->run();

您可以將匿名函數包裝在自執行匿名函數()()

所以你的第二個例子看起來像這樣。

echo Html::button('Button 3', [ 'class' => 'btn btn-primary', 'onclick' => '(function ( $event ) { alert("Button 3 clicked"); })();' ]);

搜索Google以了解有關在Javascript中自動執行匿名函數的更多信息。 你應該找到大量的信息和例子。

您可以嘗試使用submitButton而不是按鈕,如果您有其他submitButton插入條件,例如,當您使用第一個按鈕時為0,當您使用第二個按鈕時為1,然后將您的函數放入控制器並檢查,第一次提交啟動功能,第二次提交產生其他功能。 我知道這不是最好的方式,但這是我想象的唯一方式。

或者,您可以使用ajaxSubmitButton:

AjaxSubmitButton::begin([
    'label' => 'Check',
    'ajaxOptions' => [
        'type' => 'POST',
        'url' => 'country/getinfo',
        /*'cache' => false,*/
        'success' => new \yii\web\JsExpression('function(html){
            $("#output").html(html);
        }'),
    ],
    'options' => [
        'class' => 'customclass',
        'type' => 'submit'
    ]
]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM