为什么我必须按两次提交按钮才能看到实际内容?我不明白。
我使用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();
答案 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()) {...}