2016-08-04 33 views
1

我想用剛選擇類型來發送請求,並且沒有提交按鈕,我試着用JavaScript,但沒有結果symfony的發送形式的請求,而不提交

我的表單代碼:

$form = $this->createFormBuilder() 
    ->add('language', 'choice', array(
     'choices' => array(
      'ar' => 'Arabic', 
      'fr' => 'French', 
      'es' => 'Espagnol', 
      'nl' => 'Dutch', 
      'ja' => 'Japanese', 
      'en' => 'English', 
      'ko' => 'Korean', 
      'it' => 'Italian', 
      'ru' => 'Russian', 
     ), 
     'required' => false, 
     'placeholder' => 'Click to Choose Language..', 
     'attr' => array(
        'id' => 'field', 
        'class' => 'controls', 
        'data-rel' => 'chosen' 
       ) 
)) 
    ->getForm(); 

我的樹枝是如下:

<form action="{{ path('test_test') }}" method="POST" {{ form_enctype(form) }}> 
      {{ form_widget(form.language, { 'attr': {'class': 'select2'} }) }} 
</form> 

我使用了JavaScript代碼是:

<script type="text/javascript"> 
    $('#field').change(function() { 
     $(this).closest('form').trigger('submit'); 
    }); 
</script> 
+0

你可以檢查是否更改事件被觸發 –

+0

noo它不是... – Nad

+0

你使用的是select2插件嗎? (https://select2.github.io/examples.html) – DOZ

回答

2

您可以使用jQuery submit功能是這樣的:

jQuery(function($) { 
    $(".select2").change(function() { //put class or id of your select input 
     $('#id_of_your_form').submit(); 
    }); 
}); 

編輯:

如果您使用的選擇2插件(你有例子here):

jQuery(function($) { 
    $('.select2').select2() 
    .on("change", function(e) { 
      $('#id_of_your_form').submit(); 
    }) 
}); 

然後你可以像這樣在你的Symfony控制器中獲得POST數據發送:

public function getDataAction(Request $request) 
{ 
    dump($request->request->get('name of your select input');exit; 
} 
+0

我測試了,沒有結果,如果,我可以像這樣添加它

?? – Nad

+0

是的,你可以,然後通過這個 – DOZ

+0

更改jquery選擇器jQuery(功能($){ $(「。select2」)。change(function(){$('## formlang')。submit(); }); }); 它不起作用 – Nad