jQuery为什么我必须按两次提交按钮才能看到实际内容

时间:2014-11-15 18:40:23

标签: php jquery symfony

为什么我必须按两次提交按钮才能看到实际内容?我不明白。

我使用Symfony2和apache2 webserver。

谢谢!

JS:

function eintragen (){


    speichereZusatzstoffeZurUebertragung();


    /// Überprüft vor dem Abschicken ob Hauptgerichtsfeld leer ist
    $( "form#speise" ).submit(function( event ) {

        var tage = ["montag", "dienstag", "mittwoch", "donnerstag", "freitag"];
        var gericht = ["Hauptgericht", "Nachtisch"];
        var fehltwas = false;
        for (var g in gericht) {
            for (var t in tage) {
                if (!$("input#form_" + tage[t] + gericht[g]).val()) {
                    $("input#form_" + tage[t] + gericht[g]).css("background", "#ff8383");
                    fehltwas = true;
                }
            }
        }

        if (fehltwas) {
            event.preventDefault();
        }
    });


  function speichereZusatzstoffeZurUebertragung (){
        var gericht = ["HG", "NT"];
        var gericht2 = ["Hauptgericht", "Nachtisch"];

        //$("#zusaetzeMontagHG").attr('value', data);
        var alleZusatzstoffe = {{ alleZusaetze|json_encode|raw }};
        var alleZusatzstoffeEindimensional = [];

        // Von 2D Array auf 1D Array schneiden um inArray benutzen zu können
        for (var zz in alleZusatzstoffe){
            alleZusatzstoffeEindimensional.push(alleZusatzstoffe[zz]);
        }

        // Gehe jeden Zusatzstoff im Feld dafür durch

        for (var tag in tage){
            for (var g in gericht){
                var data = $("#" + tage[tag] + gericht[g] + "zusatz").select2("val");
                //alert(data.length);
                var eingegebendeZusatzstoffeKomprimiert = [];
                for(var z = 0; z < data.length; z++){

                    // eingegebender Zusatzstoff in der Zusatzstoffliste enthalten
                    if ($.inArray(data[z],alleZusatzstoffeEindimensional) != -1){
                        /// suche mir den Key des eingegebenden Zusatzstoffes raus
                        for (var i in alleZusatzstoffe){
                            if ( alleZusatzstoffe[i] == data[z] ){
                                //alert( i );
                                eingegebendeZusatzstoffeKomprimiert.push(i);
                            }
                        }
                    }

                    else {
                        //alert("Neuer ZStoff: " + data[z]);
                        eingegebendeZusatzstoffeKomprimiert.push(data[z]);
                    }
                    // form_zusDienstagHauptgericht

                }

                $("#form_zus" + tage2[tag]  + gericht2[g]).val(eingegebendeZusatzstoffeKomprimiert);

            }

        }




        //console.log(eingegebendeZusatzstoffeKomprimiert);


    }

...     {{form_widget(form.Eintragen,{'attr':{'class':'btn btn-success','onclick':'eintragen()'}}}}}

.. Symfony的

$form = $this->createFormBuilder()
            ->add('jahr', 'text', array('data' => $this->year))
            ->add('kw', 'text', array('data' => $this->kw))
            ->add('montagHauptgericht', 'text', array(
                'data' => $query[0]['montagHauptgericht']))
            ->add('montagNachtisch', 'text', array(
                'data' => $query[0]['montagNachtisch']))
            ->add('dienstagHauptgericht', 'text', array(
                'data' => $query[0]['dienstagHauptgericht']))
            ->add('dienstagNachtisch', 'text', array(
                'data' => $query[0]['dienstagNachtisch']))
            ->add('mittwochHauptgericht', 'text', array(
                'data' => $query[0]['mittwochHauptgericht']))
            ->add('mittwochNachtisch', 'text', array(
                'data' => $query[0]['mittwochNachtisch']))
            ->add('donnerstagHauptgericht', 'text', array(
                'data' => $query[0]['donnerstagHauptgericht']))
            ->add('donnerstagNachtisch', 'text', array(
                'data' => $query[0]['donnerstagNachtisch']))
            ->add('freitagHauptgericht', 'text', array(
                'data' => $query[0]['freitagHauptgericht']))
            ->add('freitagNachtisch', 'text', array(
                'data' => $query[0]['freitagNachtisch']))
            ->add('zusMontagHauptgericht', 'text', array('required' => false))
            ->add('zusDienstagHauptgericht', 'text', array('required' => false))
            ->add('zusMittwochHauptgericht', 'text', array('required' => false))
            ->add('zusDonnerstagHauptgericht', 'text', array('required' => false))
            ->add('zusFreitagHauptgericht', 'text', array('required' => false))
            ->add('zusMontagNachtisch', 'text', array('required' => false))
            ->add('zusDienstagNachtisch', 'text', array('required' => false))
            ->add('zusMittwochNachtisch', 'text', array('required' => false))
            ->add('zusDonnerstagNachtisch', 'text', array('required' => false))
            ->add('zusFreitagNachtisch', 'text', array('required' => false))
            ->add('Eintragen', 'submit')
            ->add('edit', 'submit')
            ->add('vor', 'submit')
            ->add('zurueck', 'submit')
            ->getForm();

2 个答案:

答案 0 :(得分:0)

我看到这一行

{{ form_widget(form.Eintragen, { 'attr': {'class': 'btn btn-success', 'onclick' : 'eintragen()'} } ) }}

据我所知,当您点击提交按钮时,请致电eintragen();但是只有在你点击它之后(第一次)注册了提交处理程序($( "form#speise" ).submit(function( event )...),所以你必须第二次点击它才能触发提交处理程序。

所以你需要自动调用函数eintragen()(例如当页面加载时)在点击按钮之前注册处理程序,或者在结束时手动触发提交功能

这有帮助吗?

答案 1 :(得分:0)

谢谢彼得, 我只是在几分钟之前就把它解决了

        return $this->redirect($this->generateUrl('admin'));
中的

if ($form->isValid() && $form->get('Eintragen')->isClicked()) {...}