2015-03-05 11 views
5

SCENARIUSZOnclick na normalnym przyciskiem jest złożenie formularza

mam java JSP widok z długiej formie. To działało miło. Mogę przesłać formularz, naciskając klawisz Enter w dowolnym polu wprowadzania lub przycisk przesyłania.

nowy wymóg

W części, muszę dodać przyciski zastąpić niektóre <label> dla <input> celu umożliwienia edycji, nic twardego.

co starałem

Ta część zdania jest tworzony dinamically, numer przyczyną linii zależy od danych wprowadzonych przez użytkownika, to części tworzy każdym wierszu:

resultadoHTML += " <div class='row col-lg-12 col-xs-12' style='margin-bottom: 30px;text-align: left;'>"; 
resultadoHTML += "  <label class='col-lg-3 col-xs-12 control-label' >" + nomCalidad + "</label>"; 
resultadoHTML += "  <div class='col-lg-5 col-xs-8'>"; 
resultadoHTML += "   <input type='text' class='form-control' value='"+valor+"' id='calidadCatId' maxlength='30' required='true' />"; 
resultadoHTML += "  </div>"; 

resultadoHTML += "  <div class='col-lg-2 col-xs-3' id='ccc" + parts[1] + "'>"; 
resultadoHTML += "   <label class='control-label' id='unidadCCC" + parts[1] + "' >" + parts[4] + "</label>"; 
resultadoHTML += "  </div>"; 
resultadoHTML += "  <div class='col-lg-2 col-xs-1'>"; 
resultadoHTML += "   <button id='eCCC" + parts[1] + "' class='btn btn-default'><span class='glyphicon glyphicon-plus-sign'></span></button>"; 
resultadoHTML += "  </div>"; 
resultadoHTML += " </div>"; 

wynikających HTML przycisku

<button id="eCCC5" class="btn btn-default"><span class="glyphicon glyphicon-plus-sign"></span></button> 

PROBLEM

Gdy używam onclick zdefiniować funkcję w nowym przycisku, funkcja ta nazywa, ale po zdarzenie click przycisku przedstawienia jest TAKŻE nazywa i nie wiem dlaczego ... Ale jak możesz zobaczyć w kodzie, nawet jeśli i DO NOT przechwycić dowolne zdarzenie w przycisku, wywoływane jest wydarzenie formularza.

INNE INFORMACJE

FORMULARZ/PRZYCISK DEFINICJA

<form:form class="form-horizontal" role="form" method="post" 
    commandName="contratMercan" action="../contratos/contratosubmit" 
    name="formulario" id="edicionContrato"> 

<button type="submit" class="btn btn-primary" id="edicionContrato">        
    <spring:message ... /> // omitted info 
</button> 

WYŚLIJ FUNKCJI

$("#edicionContrato").submit(function(e){ 
    e.preventDefault(); 

    var form = this; 

    // checks and workarounds... 

    form.submit(); 
}); 

Każdy pomysł, dlaczego może się zdarzyć? Może dinamically wprowadzony kod HTML ma jakiś błąd i wyrzuca javascript lub html po?

+0

Możesz uniknąć tego problemu używając ("#yourbutton"). On ("click", function() {your code}), wiesz co mam na myśli? Mogę wpisać prawidłową odpowiedź przy przesłaniu, jeśli jej potrzebujesz – gon250

+0

Nie uniemożliwi to przesłania formularza. Musisz użyć '.on (" kliknij ", funkcja (e) {e.preventDefault();/* reszta kodu * /}) ' –

+0

Nie mogę używać' on '(nazwy "" kliknięcia "są tworzone dinamicznie, jak widać ... to był głupi błąd, nie określając rodzaju przycisku –

Odpowiedz

12

Gdy używasz elementu <button> bez określania typu, to defaults to type="submit". Trzeba określić go jako type="button" go zatrzymać wysłaniu formularza:

<button type="button" id="eCCC5" class="btn btn-default"> 
    <span class="glyphicon glyphicon-plus-sign"></span> 
</button> 
+0

niesamowite! Wiedziałem Tęskniłem za czymś, ale nie widziałem co! –

1

Jeśli masz przycisk z atrybutem type="submit", klikając na przedstawienia wyśle ​​cały formularz. Myślę, że jeśli dodasz atrybut type="button" lub po prostu go usuniesz. Formularz prawdopodobnie nie zostanie wysłany, jeśli klikniesz przycisk lub wciśniesz ENTER będąc na wejściu.

+0

Świetna odpowiedź, przegłosowałem to, ale przyjąłem Jamesa, bo było to kilka sekund wcześniej ... Dzięki Mike,;) –

Powiązane problemy