0 votes

Sélectionner une entrée cachée dans le td suivant [jQuery]

J'ai une table disposée comme suit :

        <td>
                somename
        </td>
        <td class="hoverable value" >
                somevalue
        </td>
        <td class="changed">

        </td>
        <td class="original value">
            <input type="hidden" value="somevalue" />
        </td>

Et ce que j'essaie de faire, c'est de survoler le td survolable, ce qui le transforme en boîte de texte. Une fois que j'ai survolé, je veux vérifier la valeur originale du champ caché et mettre une image dans le champ modifié si les deux sont différents l'un de l'autre. Je l'ai déjà fait :

$(document).ready( function() {
    var newHTML = '';

    $('table td.hoverable').hover(
    function () {
        var oldHTML = $(this).html().trim();
        $(this).html('<input type=\'text\' value=\'' + oldHTML + '\' size=\'' + ((oldHTML).length + 2) +'\' />');
    },
    function() {
        newHTML = $('input', this).val();
        var oldHTML = $(this).next('td.original').children('hidden').val();
       if(newHTML != oldHTML) {
            $(this).next('td.changed').html('Changed');
        }
        $(this).html(newHTML);
    })
});

mais cela ne fonctionne pas. Ce qui échoue apparemment, c'est de saisir la valeur du champ caché, et j'ai essayé de le sélectionner de plusieurs façons différentes, mais je n'y arrive pas. Toute idée ou conseil est le bienvenu ;)

2voto

ICodeForCoffee Points 1786

Vous devez utiliser .nextAll()

var oldHTML = $(this).nextAll('td.original').find('input:hidden').val();

Pourquoi ? Parce que .next() prend l'élément suivant et vérifie s'il correspond au sélecteur. Si vous utilisez .nextAll() vous obtenez l'élément suivant qui correspond au sélecteur.

1voto

Ken Redler Points 15204

Essayer

$(this).next('td.original').find('input:hidden').val();

0voto

Anatoly G Points 2864
var oldHTML = $(this).next('td.original').children(':hidden').val();

0voto

Kerry Points 7803

Remplacer

var oldHTML = $(this).next('td.original').children('hidden').val();

Avec

var oldHTML = $(this).next('td.original').find('input:hidden').val();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X