2016-08-02 56 views
1

我正在yii2中使用文件上傳與默認yii2 fileInput()。 的代碼是:添加交換內部模板輸入yii2 fileInput

$form->field($model, 'image', [ 
     'template' => "<span class='button'>{input}Browse</span><input type='text' placeholder='Include some files' readonly=''>" 
     ])->fileInput(['multiple' => false, 'accept' => 'image/* '])->label(false); 

這裏我使用自定義模板如上。問題是{input}會自動生成輸入字段,但我想爲此輸入添加一個onchange屬性。可能嗎?任何幫助,將不勝感激。謝謝

+0

嗨,你想要做什麼'onChange'事件?它與查看該字段或不同的東西有關嗎?你能否給我一些更多的信息? –

+0

我想更改onchange上另一個字段的值。 –

+0

我明白了。我不確定你的意思是哪個'onChange'事件(文件/字段/值更改?),所以我根據首次檢測到的具有相同名稱的事件編寫。我希望它有幫助。 –

回答

0

可以改變任何你想要的,但更可靠和更快的方法是使用FileInput Widget by Kartik。你必須先安裝它。要做到這一點,寫這個命令在作曲家或bash命令行:composer require "kartik-v/yii2-widget-fileinput": "*"和安裝後別忘了使用它通過在您的項目.php文件中寫入use kartik\file\FileInput;。你可以看到all possible plugin events(其中有很多)。此處描述的第一個事件是更改(「通過文件瀏覽按鈕在文件輸入中選擇單個文件或多個文件時會觸發此事件」)

要初始化插件時,使用這樣的:

echo $form->field($model, 'attribute', [ 
    'template' => "<span class='button'>{input}Browse</span><input type='text' placeholder='Include some files' readonly=''>"])->widget(FileInput::classname(), 
    [ 
     'options' => ['multiple' => false, 'accept' => 'image/*'], 
     'pluginEvents' = [ 
      'change' => 'function(event) { 
       alert("File changed"); 
      }' 
     ] 
    ])->label(false); 

現在你可以寫你的JavaScript/jQuery的封閉機能的研究在alert("File changed");位於這些線。建議使用它,因爲它提供了足夠的選項供您選擇,而且開發速度更快。

+0

謝謝!沒事。 –