Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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
Javascript Yii2按钮点击匿名功能_Javascript_Function_Button_Yii2_Anonymous - Fatal编程技术网

Javascript Yii2按钮点击匿名功能

Javascript Yii2按钮点击匿名功能,javascript,function,button,yii2,anonymous,Javascript,Function,Button,Yii2,Anonymous,我是Yii2新手,我正在努力通过按下Yii2按钮来触发匿名功能。 下面是6个样本,其中前两个还可以。 但这并不是我想要的。 我想知道如何让匿名函数工作,比如“按钮3”和“按钮5”的情况。我测试了如何通过控制器进行函数调用,这可以正常工作,但这不是我想要的。我会感谢你的帮助-谢谢 // This works $button1 = Button::begin ( [ 'label' => 'Button 1', 'options' => [ 'class' => 'btn

我是Yii2新手,我正在努力通过按下Yii2按钮来触发匿名功能。 下面是6个样本,其中前两个还可以。 但这并不是我想要的。 我想知道如何让匿名函数工作,比如“按钮3”和“按钮5”的情况。我测试了如何通过控制器进行函数调用,这可以正常工作,但这不是我想要的。我会感谢你的帮助-谢谢

// 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,然后将您的函数放入控制器并检查,第一个submit启动函数,第二个submit生成其他内容。我知道这不是最好的方法,但这是我想象的唯一方法

或者,您可以使用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'
    ]
]);

@KimmofromJyvaskyla如果它对你有帮助,那么你可以接受它作为一个有效的答案吗?