2015-01-13 16 views
5

मैं वाईआई 2 के लिए नया हूं, और मैं एक Yii2 बटन दबाकर एक अनाम फ़ंक्शन ट्रिगर करने के लिए संघर्ष कर रहा हूं। नीचे 6 नमूने हैं, जिनमें से पहले दो ठीक हैं। लेकिन यह वही नहीं है जो मैं चाहता हूं। मैं जानना चाहता हूं कि मैं "बटन 3" और "बटन 5" के मामलों की तरह काम करने वाले अज्ञात फ़ंक्शन कैसे प्राप्त कर सकता हूं। मैंने परीक्षण किया कि कंट्रोलर के माध्यम से फ़ंक्शन कॉल कैसे करें, और यह ठीक काम करता है, लेकिन यह न तो मैं चाहता हूं। मैं आपकी मदद की सराहना करता हूं - धन्यवाद!Yii2 बटन अज्ञात फ़ंक्शन पर क्लिक करें

// 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(); 

उत्तर

8

आप स्वयं को क्रियान्वित गुमनाम समारोह ()() में अपनी गुमनाम समारोह लपेट कर सकते हैं।

तो आपका दूसरा उदाहरण इस तरह कुछ दिखाई देगा।

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

जावास्क्रिप्ट में अज्ञात कार्यों को स्वयं निष्पादित करने के बारे में अधिक जानने के लिए Google पर खोजें। आपको बहुत सारी जानकारी और उदाहरण मिलना चाहिए।

+0

धन्यवाद! यह मदद करता है। –

+0

@ किममोफ्रॉम ज्यवस्काला अगर यह आपकी मदद करता है तो क्या आप इसे वैध उत्तर के रूप में स्वीकार कर सकते हैं? – Tahir

0

आप किसी बटन के बजाय सबमिटबटन का उपयोग करने की कोशिश कर सकते हैं, यदि आपके पास अन्य सबमिट है तो बटन एक ऐसी स्थिति डालें जो उदाहरण के लिए 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' 
    ] 
]); 
संबंधित मुद्दे