[Javascript] Selezionare una checkbox in maniera condizionata

gm_marco

Nuovo Utente
20 Set 2017
3
0
1
54
Salve,
sono un nuovo utente del Forum e vi chiedo un aiuto per risolvere un problema con la gestione di una checkbox da checkare a fronte di un valore recuperato dal DB. Sto manutenendo il codice di una web application J2EE scritta in Java 1.4, JSP/HTML e Ajax. utilizzando un Application Server WebLogic Server 8.1 su framework Jakarta Struts 1.1 per implementare il pattern MVC . Quindi stiamo parlando di codice abbastanza vecchio ...
Di seguito la parte del form dove implemento la checkbox :

Codice:
<td class="etichetta"> Payment
<td class="campo">
<input type="checkbox" name="ins_payment" id="ins_payment"
<c:if test="${(gfn_InsACF.ins_split_payment == 'Y') }"><c:eek:ut value="checked" /></c:if> />
</td>

Ho poi una funzione JS tramite cui attivo la callback ajax :

Codice:
function setPayment(){  
		
		alert('setPayment : '+ document.getElementById('ins_payment').value);

		retrieveURLSplitPay(js_context_path +'/pages/protected/gfn_ajx_ins_cid.jsp?ins_parent_id='+document.getElementById('ins_parent_id').value,'blank_from');
}

che gestisco senza problemi , con la funzione di ritorno dentro la quale controllo l'attributo ins_pay settato nel jsp ajax :

Codice:
	function Pay_processStateChange() {

  	  if (req.readyState == 4) { // Complete
	  			document.getElementById('loadingDiv').style.display = 'none';
	  	      if (req.status == 200) { // OK response
					
	  			if (document.getElementById('ins_split_payment')) 
	  				
				{
					alert('Pay_processStateChange : '+ document.getElementById('ins_pay').value);

					if  (document.getElementById('ins_pay').value="Y") 
					{
						document.getElementById('ins_payment').checked = true;
					}
					else
					{
						document.getElementById('ins_payment').checked = false;
					}
				}
				else
					{	
						alert('Pay_processStateChange - ins_pay vuoto');
					}
						               
      } else {
        alert("Problem with server response:\n " + req.statusText);
      }
	} else	{
			//CentraLoadingDivLite('loadingDiv');
			document.getElementById('loadingDiv').style.display = 'inline';
			}
  }

Questo è il codice ajax dove setto l'attributo :

Codice:
<%@ page contentType="text/html; charset=UTF-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
</HEAD>
<BODY>

<%
Connection con = JdbcUtils.getDBConnection();
String ins="N";

if ( request.getParameter("ins_parent_id")!= null) 
{
	ins = JdbcUtils.getSplitPayment(request.getParameter("ins_parent_id"));

}
JdbcUtils.closeConnection(con);
%>
 
 <form>
  <input type="text" name="ins_pay" id="ins_pay" value="<%=ins%>"  />
 </form>
 
</BODY>
</HTML>

Il problema è che la funzione Pay_processStateChange, mi ritorna sempre "Pay_processStateChange - ins_pay vuoto".

Grazie della collaborazione.

Ciao
GM_Marco
 
Ultima modifica:

mtt

Nuovo Utente
12 Set 2017
14
0
1
leggi il valore e poi usa
Codice:
document.getElementById("myCheck").checked = true;
dovrebbe andare.
 

gm_marco

Nuovo Utente
20 Set 2017
3
0
1
54
leggi il valore e poi usa
Codice:
document.getElementById("myCheck").checked = true;
dovrebbe andare.
Grazie Mitt, ma la richiesta non era completa, perchè mi è partito il messaggio prima di completare il tutto, se puoi dare un occhio al contenuto completo e farmi sapere , grazie.
 

mtt

Nuovo Utente
12 Set 2017
14
0
1
Vedo che per il controllo prendi il valore da un campo :
Codice:
document.getElementById('ins_pay').value
Ma il valore di ritorno dalla chiamata ajax è stato messo nel campo?
Altrimenti il controllo invece di farlo prelevando il valore dalla pagina, fallo sul valore di ritorno direttamente, magari mettendo dentro una variabile.Poi quando si fanno i controlli if bisogna usare il doppio uguale (==) perchè altrimenti è una assegnazione e con l'if non funziona.
Spero di aver individuato il problema.
 

gm_marco

Nuovo Utente
20 Set 2017
3
0
1
54
Vedo che per il controllo prendi il valore da un campo :
Codice:
document.getElementById('ins_pay').value
Ma il valore di ritorno dalla chiamata ajax è stato messo nel campo?
Altrimenti il controllo invece di farlo prelevando il valore dalla pagina, fallo sul valore di ritorno direttamente, magari mettendo dentro una variabile.Poi quando si fanno i controlli if bisogna usare il doppio uguale (==) perchè altrimenti è una assegnazione e con l'if non funziona.
Spero di aver individuato il problema.

Mitt, il campo è valorizzato nell'ajax , che ulteriormente modificato :
Codice:
<%
Connection con = JdbcUtils.getDBConnection();
String ins="N";

if ( request.getParameter("ins_parent_id")!= null) 
{
    ins = JdbcUtils.getSplitPayment(request.getParameter("ins_parent_id"));
    session.setAttribute("ins_pay",ins);

}
JdbcUtils.closeConnection(con);
%>


 <form>
  <input type="hidden" name="ins_splitpayment" value="{sessionScope.ins_pay}"  />
 </form>

Gestisco un attributo session , non so se è corretto ....

Codice:
    function Pay_processStateChange() {

       if (req.readyState == 4) { // Complete
                document.getElementById('loadingDiv').style.display = 'none';
             if (req.status == 200) { // OK response
                   
                if (document.getElementById('ins_pay')) 
                   
                {
                    alert('Pay_processStateChange : '+ document.getElementById('ins_pay').value);

                    if  (document.getElementById('ins_pay').value=="Y") 
                    {
                        document.getElementById('ins_payment').checked = true;
                    }
                    else
                    {
                        document.getElementById('ins_payment').checked = false;
                    }
                }
                else
                    {   
                        alert('splitPay_processStateChange - ins_pay vuoto');
                    }
       
                             
      } else {
        alert("Problem with server response:\n " + req.statusText);
      }
    } else    {
            //CentraLoadingDivLite('loadingDiv');
            document.getElementById('loadingDiv').style.display = 'inline';
            }
  }

Ora non ritorna più vuoto , ma non mi setta la checkbox,
 

mtt

Nuovo Utente
12 Set 2017
14
0
1
Per me,ripeto per me, è un codice troppo elaborato per quello che deve fare e non conosco l'attributo session.
Per le chiamate ajax uso il costrutto con XMLHttpRequest().Prendo il valore di ritorno con l'attributo responseTex.
Personalmente farei così: metterei il ritorno della chaiamata ajax dentro una variabile così
Codice:
var controllo=req.responseText;
o altra istruzione similare e dopo farei la verifica del valore forzando l'eventuale check.
E farei più semplice il codice html della checkbox cioè:
Codice:
<input type="checkbox" name="ins_payment" id="ins_payment">
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Javascript per selezionare contenuti pagina tramite checkbox Javascript 1
M Inviare un file su un server remoto con JavaScript Javascript 0
T a href="javascript:;" Javascript 0
F Creare elementi html con javascript Javascript 2
A pulsante di update campo mysql con javascript Javascript 2
8 Javascript - PDF Form Javascript 0
B javascript per problemi con pdf e Safari Javascript 0
N informazione javascript Programmazione 0
I Eecuzione di javascript in ciclo foreach php. PHP 7
P javascript:document.forms Javascript 7
S Consiglio esercizio Javascript Javascript 2
MarcoGrazia Aggiungere o rimuovere classi in javascript Javascript 1
P Passaggio id php a javascript PHP 6
E lettura da un Database con Javascript jQuery 2
V TRIS in javascript Javascript 1
IClaude Funzione Javascript Javascript 8
Alex_70 Javascript date color Javascript 3
F Convertire JavaScript per la compatibilità nei browser obsoleti Javascript 0
I Passare dei parametri in javascript PHP 0
Shyson Meglio Javascript o HTML? Javascript 4
M Chiamare pagina php da javascript Javascript 8
M Errore JavaScript per php [objeto HTMLParagraphElement] PHP 0
D Javascript per il download dei dati Javascript 0
grgfede Problema javascript con aruba Javascript 1
webmachine [PHP] [JAVASCRIPT] Form strano in HTML PHP PHP 1
W Modificare il Type di un Input box in javascript ovunque si trovi Javascript 0
I javascript come caricare una pagina sopra quella corrente in automatico Javascript 2
L [Javascript] Problema salvataggio dati in db Javascript 1
max1974 [Javascript] Grafico chartjs con dati da J.ajax Javascript 3
G Quiz Javascript Javascript 4
A [Javascript] Scrittura su più campi contemporaneamente Javascript 19
F classic asp popolare combo box javascript Presentati al Forum 1
claudio_lorenzo [Javascript] aiuto su jquery per calcolo altezze dom Javascript 1
F [Javascript] comando innerHTML non funziona Javascript 5
alexice51 proggrammi per scrivere in javascript? Javascript 3
max1974 [Javascript] Accordion aria-exspanded Javascript 0
D [Javascript] salvare immagine canvas - paypal Javascript 0
O [Javascript] Conflitto Jquery: forse... Javascript 0
M [Javascript] Canvas js css Javascript 1
M Programmazione web HTML, CSS e JavaScript Offerte e Richieste di Lavoro e/o Collaborazione 6
G [Javascript] Errore inserimento dati Backend Node.js e workbench Javascript 1
A Creare con Javascript un percorso all'interno di uno spazio Javascript 0
D [Javascript] inserire uno script in un file php Javascript 6
Monital [Javascript] inserire dati estratti dal db in html fisso Javascript 1
K [javascript] Tecnica per rilevare celle contenenti caratteri ricevute in dinamico Javascript 1
F [JavaScript] Ottenere il CSS dopo transform: scale() e transform-origin Javascript 0
S [Javascript] Problema costrutto if Javascript 0
I [Javascript] window.location.href porta alla nuova pagina e ritorna incomprensibilmente. Javascript 0
L [Javascript] input variabili di scrittura con canvas Javascript 2
G [Javascript] Passare un valore via querystring Javascript 1

Discussioni simili