Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Javascript - Combox e Jquery .JS
Forum - Javascript - Combox e Jquery .JS

Avatar
WillyVB (Normal User)
Rookie


Messaggi: 31
Iscritto: 30/12/2011

Segnala al moderatore
Postato alle 17:24
Lunedì, 11/11/2013
Salve,

Vorrei sapere nei dettagli come posso strutturare una combobox su pagina .html e codice su un file denominato "common.js"

il pseudo codice da me scritto è il seguente:

Richiamo file js
Codice sorgente - presumibilmente Plain Text

  1. <script type="text/javascript" src="/js/common.js"></script>



Strutturazione combobox
Codice sorgente - presumibilmente Plain Text

  1. <form name="combocost">
  2.                                                         <select name="combocost" onchange="notContains()">
  3.                                                         <option value="Val1">Val1</option>
  4.                                                         <option value="Val1">Val2</option>
  5.                                                         </select>
  6. </form>



Codice su file JS
Codice sorgente - presumibilmente Plain Text

  1. $('#notContains').change( function() {
  2.         f = document.form1;
  3.         $('td:first-child').parent('tr:not(:contains("f.combocost.options[f.combocost.selectedIndex].value"))').toggle();
  4.     });




In pratica io ho un html su cui appare una tabella creata tramite un'altra pagina php, il tutto con l'ausilio del file common.js

Avrei necessità di nascondere le righe in cui non è presente un dato valore, per questo ho pensato nel selezionare questo valore tramite combobox, ma il tutto non funziona, qualche aiuto?

PM Quote
Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 20:31
Lunedì, 11/11/2013
Il problema è che stai mischiando javascript puro e i costrutti della libreria jquery. Innanzitutto non devi dare lo stesso nome al form e al select (quindi, rinomina il form ad esempio in form_combocost); poi, dato che stai evidentemente usando jquery (a proposito, non è che hai scordato di includerla?), non serve usare l'onclick, devi invece sostituire
Codice sorgente - presumibilmente Plain Text

  1. $('#notContains')

con
Codice sorgente - presumibilmente Plain Text

  1. $('#combocost')


(Come spiegato qui http://api.jquery.com/change/)

PM Quote
Avatar
WillyVB (Normal User)
Rookie


Messaggi: 31
Iscritto: 30/12/2011

Segnala al moderatore
Postato alle 16:34
Martedì, 12/11/2013
la libreria jquery è inclusa

Ho apportato tali modifiche

Richiamo libreria jquery su districts.html
Codice sorgente - presumibilmente Plain Text

  1. <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>



Richiamo file common.js su districts.html
Codice sorgente - presumibilmente Plain Text

  1. <script type="text/javascript" src="/js/common.js"></script>



Form su districts.html
Codice sorgente - presumibilmente Plain Text

  1. <form name="form_comboCost">
  2.              <select name="comboCost">
  3.                    <option value="Val1">Elfrard</option>
  4.                    <option value="Val1">Eoldulf</option>
  5.               </select>
  6. </form>




Funzione comboCost sul file common.js
Codice sorgente - presumibilmente Plain Text

  1. $('#comboCost').change( function() {
  2.         $('td').parent('tr:not(:contains("form_comboCost.options[form_comboCost.selectedIndex].value"))').toggle();
  3.     });




ma non va.... dove sbaglio?

PM Quote
Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 19:57
Martedì, 12/11/2013
Scusa prima mi erodimenticato di dirti che tutto il js va racchiuso in
Codice sorgente - presumibilmente Plain Text

  1. $(document).ready(function(){
  2. //qui
  3. });


PM Quote
Avatar
WillyVB (Normal User)
Rookie


Messaggi: 31
Iscritto: 30/12/2011

Segnala al moderatore
Postato alle 21:49
Martedì, 12/11/2013
Scusa se disturbo, non sono molto pratico di questi linguaggi (preferisco quelli gestionali xD)

in pratica cosi?

Codice sorgente - presumibilmente Plain Text

  1. $(document).ready(function(){
  2.  $('#comboCost').change( function() {
  3.          $('td').parent('tr:not(:contains("form_comboCost.options[form_comboCost.selectedIndex].value"))').toggle();
  4.     });
  5. })




oppure cosi?

Codice sorgente - presumibilmente Plain Text

  1. $(document).ready(function(){        $('td').parent('tr:not(:contains("form_comboCost.options[form_comboCost.selectedIndex].value"))').toggle();
  2. });



e per "$(document) in cosa dovrei modificarlo?

PM Quote
Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 22:46
Martedì, 12/11/2013
La prima. Non c'è bisogno di modificare niente (vedi qui http://learn.jquery.com/using-jquery-core/document-ready/)

PM Quote
Avatar
WillyVB (Normal User)
Rookie


Messaggi: 31
Iscritto: 30/12/2011

Segnala al moderatore
Postato alle 23:05
Martedì, 12/11/2013
ok ho provato come dici tu ma non va, qui di seguito una "demo" su fiddle: http://jsfiddle.net/Eswzd/20/

mentre qui c'è un'esempio trovato per la rete tramite checkbox: http://jsfiddle.net/Eswzd/13/

Ripeto, io ho bisogno di nascondere dalla tabella tutte quelle righe che non contengono il testo selezionato dalla combobox, sto impazzendo 8-|

Ultima modifica effettuata da WillyVB il 12/11/2013 alle 23:06
PM Quote
Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 21:43
Mercoledì, 13/11/2013
Ok ci ho passato una ventina di minuti prima di capire che l'evento non si scatenava perchè hai messo name invece che id nel tag HTML:
Codice sorgente - presumibilmente Plain Text

  1. <select id="comboCost">

poi ho dato una sistemata al codice, ci ho ragionato un attimo ed era molto più semplice di quel che pensavi: per ottenere il valore basta $(this), quindi vedi qui http://jsfiddle.net/Eswzd/29/

Credo sia quello che intendevi, altrimenti chiedi pure ;)

PM Quote