Jquery function find

  • Creatore Discussione Creatore Discussione Vera
  • Data di inizio Data di inizio

Vera

Utente Attivo
3 Giu 2014
76
1
8
Ciao a tutti,
data una tabella html riempita tramite i valori di un db, vorrei poter intercettare il valore di un campo di input della riga della tabella. La tabella in questione ha diversi record e alla pressione del tasto in una determinata riga chiamo un javascritp per intercettare i valori della tabella, compreso il campo di input. So che esiste una funzione jquery (find) per reperire il valore immesso nel campo di input, ma vorrei avere un aiuto sulla relativa sintassi.
Posto sia l'HTML che le prime righe del javascript (quelle relative all'intercettazione del valore del campo di input). Mi postate la sintassi corretta della funzione find valida per il mio caso?
Grazie 1000

HTML:

HTML:
<?php $number = 0; ?>

<table id="table4" style="width: auto;" class="table table-condensed" border="0" cellpadding="0" cellspacing="0">
  <thead>
    <tr>
      <th colspan="1" rowspan="2"><font size="2">Nome</font></th>
      <th colspan="1"><font size="2">Importo</font></th>
      <th colspan="1"><font size="2">Mese di</font></th>
    </tr>
    <tr>
      <th><font size="2">Servizio</font></th>
      <th><font size="2">lordo</font></th>
      <th><font size="2">competenza</font></th>
    </tr>
  </thead>
  <tbody>
  <?PHP for($i=0; $i<count($recordDb); $i++){?>
    <tr id='<?php echo $number++; ?>'>
      <td><font size="2"><?php echo $recordDb[$i]['NOME']; ?></font></td>
      <td><input type="text" style="width: 70px; text-align: right" name="IMLORD" id="IMLORD" class="decimal-2-places" aria-describedby="basic-addon1" placeholder=",00" maxlength="6"></td>
      <td><input type="text" style="width: 70px;" name="DTMMAA" id="DTMMAA" class="dtmmaa" data-date-format="mm/yyyy" aria-describedby="basic-addon1" placeholder="MM/AAAA" maxlength="6"></td>
                                                                      
      <td><div align="left"><button type="button" value="Aggiorna" onclick="Aggiorna01('<?php echo $recordDb[$i]['NOME']; ?>', '<?php echo $number; ?>')"
          class="btn btn-primary" style="float: left;" aria-label="Left Align">
          <span class="glyphicon glyphicon-send" style="color:yellow" aria-hidden="true"></span> Registra</button></div>
      </td>
    </tr>
  <?PHP } ?>   
  </tbody>   
</table>

Javascript:

Codice:
function Aggiorna01(nome, number){       
    alert(number); // Qui controllo effettivo valore della riga alla pressione del tasto (Registra)

// Qui dovrei reperire il valore della riga selezionata 
   var impo01 = $('#number').find('td').find("input[name='IMLORD']").val;
 
Ciao, devi modificare il selettore cosi
Codice:
$('#' + number)
perchè number è una variabile e devi concatenarla il segno +
 
sarebbe a dire:
Codice:
var impo01 = $('#' + number).find('td').find("input[name='IMLORD']").val;
 alert(impo01);

ma codi facendo nella successiva alert ho questo di risulato:

Codice:
function ( value ) {
        var ret, hooks, isFunction,
            elem = this[0];

        if ( !arguments.length ) {
            if ( elem ) {
                hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];

                if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
                    return ret;
                }

                ret = elem.value;

                return typeof ret === "string" ?
                    // handle most common string cases
                    ret.replace(rreturn, "") :
                    // handle cases where value is null/undef or number
                    ret == null ? "" : ret;
            }

            return;
        }

        isFunction = jQuery.isFunction( value );

        return this.each(function( i ) {
            var val;

            if ( this.nodeType !== 1 ) {
                return;
            }

            if ( isFunction ) {
                val = value.call( this, i, jQuery( this ).val() );
            } else {
                val = value;
            }

            // Treat null/undefined as ""; convert numbers to string
            if ( val == null ) {
                val = "";
            } else if ( typeof val === "number" ) {
                val += "";
            } else if ( jQuery.isArray( val ) ) {
                val = jQuery.map(val, function ( value ) {
                    return value == null ? "" : value + "";
                });
            }

            hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];

            // If set returns undefined, fall back to normal setting
            if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
                this.value = val;
            }
        });
    }

a me serve avere (sempre nella finestra di alert) il valore che digito nel campo di input (ad esempio: 2500, 1800, 1500..... etc) non una finestra di alert come quella descritta qui sopra
 
val() è una funzione, vuole le parentesi tonde
prova cosi
Codice:
var impo01 = $('#' + number).find('td').find("input[name='IMLORD']").val();
 
il primo alert:
Codice:
alert(number);
mi da il numero esatto della riga dove clicco sul bottone (ad esempio ho due righe e quindi number = 2)

il secondo alert
Codice:
alert(impo01);
mi dice: undefined cioé non mi valorizza impo01.

???
 
le td che trova la funzione find() sono più di una, prova ad indicare il numero con eq()
Codice:
var impo01 = $('#' + number).find('td').eq(2).find("input[name='IMLORD']").val();
eventualmente prova anche con il 3, non ricordo se il conteggio parte da 0 o da 1.
Risolto questo devi trovare il modo di assegnare un id diverso ad ogni input,vedo che dai a tutti id="IMLORD"
 
Niente.....
ho provato con:
Codice:
var impo01 = $('#' + number).find('td').eq(2).find("input[name='IMLORD']").val();

oppure
Codice:
var impo01 = $('#' + number).find('td').eq(3).find("input[name='IMLORD']").val();

oppure
Codice:
var impo01 = $('#' + number).find('td').eq(1).find("input[name='IMLORD']").val();

ma il risultato é sempre lo stesso, non mi valorizza la variabile impo01
 
a me funziona anche senza l'eq(). Ho provato cosi
HTML:
<table>
    <tr id="1">
        <td></td>
        <td></td>
        <td><input type="text" name="IMLORD" value="ciao"/></td>
        <td><input type="button" value="leggi" onclick="leggi(1)"/></td>
    </tr>
</table>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
    function leggi(number) {
        var impo01 = $('#' + number).find('td').eq(2).find("input[name='IMLORD']").val();
        alert(impo01);
    }
</script>
 

Discussioni simili