2016-04-19 5 views
1

Also, irgendwelche Hinweise, warum das nicht funktioniert? Ich versuche, beide Eingabefelder ('pagamento' und 'parcelas') auf ein Preset zu setzen, wenn die 'Boleto' Radiobox ausgewählt ist ('1' und 'MercadoPago', bzw. zurück zur Benutzereingabe, wenn die 'Cartão' Radiobox ausgewählt.DOM Ereignisverkettung funktioniert nicht

function boleto() { 
 
    if(document.getElementById('tipodepagamento').checked==true){ 
 
     document.getElementById('pagamento').value = 'MercadoPago'; 
 
     document.getElementById('pagamento').disabled = true; 
 
     document.getElementById('parcelas').value = '1'; 
 
     document.getElementById('parcelas').disabled = true; 
 
    } 
 
    else{ 
 
     document.getElementById('pagamento').disabled = false; 
 
     document.getElementById('parcelas').disabled = false; 
 
    } 
 
}
<div class="col-md-6"> 
 
    <label class="radio-inline"> 
 
     <input type="radio" name="tipodeconta" id="tipodepagamento2" value="Cartão" checked onClick="boleto();">Cartão de Crédito 
 
    </label> 
 
</div> 
 
<div class="col-md-6"> 
 
    <label class="radio-inline"> 
 
     <input type="radio" name="tipodeconta" id="tipodepagamento" value="Boleto" onClick="boleto();">Boleto 
 
    </label> 
 
</div> 
 
<label>Plataforma de Pagamento</label> 
 
<select class="form-control" onClick="fpagamento();validador();" onKeyUp="fpagamento();" name="pagamento" id="pagamento"> 
 
    <option value="Selecione">Selecione</option> 
 
    <option value="Paypal">Paypal</option> 
 
    <option value="MercadoPago">Mercado Pago</option> 
 
</select> 
 
<label>Número de Parcelas</label> 
 
<select class="form-control" id="parcelas" name="parcelas"> 
 
    <option value="1">1x</option> 
 
    <option value="2">2x</option> 
 
</select>

+4

document.getElementById ('pagamento') value = 'MercadoPago.'; document.getElementById ('pagamento'). Value = '1'; Sie setzen das gleiche Feld hier zweimal. Ich denke, zweite Zeile müssen Sie Wert für Pakete festlegen. –

+3

Können Sie Ihren 'html' Code auch hinzufügen? – BSeitkazin

+0

Wann wird 'Boleto' ausgeführt? Sie können die Funktion ausführen/binden, bevor das DOM existiert. – 4castle

Antwort

1

Fiddle = http://kodeweave.sourceforge.net/editor/#d692f9461c022ee386cb2c5329f453c4

ich ein paar Probleme mit Ihrem Code.

<input type="radio" name="tipodeconta" id="tipodepagamento" value="Boleto" onClick="boleto();"> 
<select class="form-control" onClick="fpagamento();validador();" onKeyUp="fpagamento();" 

Zunächst einmal sollten Sie nicht onClick für ein Optionsfeld oder ein select Element verwenden. verwenden onChange statt, das heißt, dass Sie nicht onKeyUp="fpagamento();"

BTW aufrufen müssen: Ihr Code ist sehr WET. Außerdem ist es eine schlechte Übung, ein OnClick-Attribut in Ihrem HTML-Code hinzuzufügen (dasselbe gilt für andere Ereignisse). Setzen Sie Ihr Javascript in eine .js Datei und bearbeiten Sie es dort.

var tipodeconta = $('input[name=tipodeconta]'), 
 
    cartao  = document.querySelector('#tipodepagamento2'), 
 
    pagamento = $('#pagamento'), 
 
    checkThis = $('.form-control'); 
 

 
tipodeconta.on('change', function() { 
 
    if (cartao.checked) { 
 
    pagamento.val('MercadoPago'); 
 
    } 
 
    (cartao.checked) ? checkThis.prop('disabled', true) : checkThis.removeAttr('disabled'); 
 
}).trigger('change');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="panel panel-default"> 
 
    <div class="panel-body"> 
 
    <div class="col-md-6"> 
 
     <label class="radio-inline"> 
 
     <input type="radio" name="tipodeconta" id="tipodepagamento2" value="Cartão" checked=""> 
 
     Cartão de Crédito 
 
     </label> 
 
    </div> 
 
    <div class="col-md-6"> 
 
     <label class="radio-inline"> 
 
     <input type="radio" name="tipodeconta" id="tipodepagamento" value="Boleto"> 
 
     Boleto 
 
     </label> 
 
    </div> 
 
    </div> 
 
</div> 
 

 
<label>Plataforma de Pagamento</label> 
 
<select class="form-control" name="pagamento" id="pagamento" disabled=""> 
 
    <option value="Selecione">Selecione</option> 
 
    <option value="Paypal">Paypal</option> 
 
    <option value="MercadoPago">Mercado Pago</option> 
 
</select> 
 
<label>Número de Parcelas</label> 
 
<select class="form-control" id="parcelas" name="parcelas" disabled=""> 
 
    <option value="1">1x</option> 
 
    <option value="2">2x</option> 
 
</select>

+0

Die Sache ist, dass, wenn "Boleto" ausgewählt ist, müssen sowohl 'pagamento' und 'Parcela' deaktiviert sein, und 'Cartão' muss auswählbar sein –

+0

Ich postete eine funktionierende JQuery basierte Lösung. –

Verwandte Themen