2015-03-05 11 views
5

SCENARIOOnclick sul pulsante normale si presenterà sotto forma

ho una visione java JSP con una forma lunga. Funzionava bene. Posso inviare il mio modulo premendo invio in qualsiasi campo di inserimento o con pulsante di invio.

nuovo requisito

In una parte, devo aggiungere pulsanti per sostituire alcuni <label> per <input> per consentire la modifica, niente di difficile.

quello che ho cercato

Questa parte della vista viene creata dinamicamente, il numero causa di linee dipende dei dati introdotti dall'utente, questo parti crea ogni riga:

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>"; 

risultante HTML del pulsante

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

PROBLEMA

Quando uso onclick di definire una funzione nel nuovo tasto, questa funzione viene chiamata, ma dopo, l'evento click del pulsante di invio è ANCHE chiamati e non so perché ... Ma, come è possibile vedere nel codice, anche quando i NON cattura alcun evento nel pulsante viene chiamato l'evento click del modulo.

ALTRE INFORMAZIONI

FORM/BUTTON DEFINIZIONE

<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> 

confermare la funzione

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

    var form = this; 

    // checks and workarounds... 

    form.submit(); 
}); 

Dell'idea perché potrebbe succedere? Forse introdotto dinamicamente il codice HTML ha qualche errore e si rompe javascript o html dopo?

+0

È possibile evitare questo problema utilizzando ('#yourbutton'). On ('click', function() {your code}), sai cosa intendo? Posso scrivere una risposta corretta con l'invio se ne hai bisogno – gon250

+0

Non impedirà l'invio del modulo. Devi usare '.on ('click', function (e) {e.preventDefault();/* resto del codice * /}) ' –

+0

non posso usare' on ('click'' i nomi sono creati dinamicamente come puoi vedere ... è stato un errore stupido non definire il tipo di pulsante –

risposta

12

Quando si utilizza l'elemento <button> senza specificare un tipo, è defaults to type="submit". È necessario specificare come type="button" per fermarlo inviare il modulo:

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

incredibile! lo sapevo Mi mancava qualcosa, ma non ho visto cosa !!! –

1

Se avete il pulsante con l'attributo type="submit", cliccando sulla presentare invierà modulo intero. Penso che se aggiungi l'attributo type="button" o lo elimini. Il modulo probabilmente non verrà inviato se si fa clic sul pulsante o si preme ENTER in ingresso.

+0

Ottima risposta. L'ho svalutato, ma ho accettato James perché era qualche secondo prima ... Grazie Mike,;) –

Problemi correlati