2010-06-29 7 views
1

J'ai ce grand javascript qui remplit automatiquement les valeurs de toutes les zones de texte sur une page avec un nombre, en commençant à 1 puis en augmentant.Comment vérifier l'identifiant d'une zone de texte en javascript?

function editTextBoxes() { 
     var textboxs = $('input:text'); 

     for (i = 0; i <= textboxs.length; i++) { 
      $('input:text:eq(' + i + ')').val(i + 1); 
     } 
    } 

Cependant, je ne veux que pour remplir les zones de texte qui est id contiennent txtSortOrder

Quelqu'un peut-il s'il vous plaît me aider à résoudre cette ligne: (il est juste une supposition)

if ($('input:text:eq(' + i + ')').ID.Contains("txtSortOrder") 

Répondre

3

Vous pouvez tirer tout attribut utilisant la fonction attr. Pour le Contains(), vous pouvez utiliser indexOf qui renverra -1 si la recherche est introuvable.

Alors cela nous amène loin:

if ($('input:text:eq(' + i + ')').attr('id').indexOf("txtSortOrder") !== -1) 

Maintenant, pour votre itération, vous pouvez réellement utiliser each pour traiter les résultats de votre requête.

E.g.

function editTextBoxes() { 
    $('input:text[id~=txtSortOrder]').each(function (index) { 
     $(this).val(index + 1); 
    }); 
} 

Avis ce étend votre sélection à utiliser Attribute Contains word Selector: input:text[id~=txtSortOrder]

Ce qui signifie que vous ne devez pas faire la comparaison ID manuellement

+0

+1 Il a travaillé, Merci! – aron

+0

Ah, non ce n'est pas égal à txtSortOrder, mais seulement le contient. – aron

+0

@aron - oups, vous avez raison. :) Ce serait '~ =' plutôt que '! =' - voir ma mise à jour. – Matt

1

code:

function editTextBoxes() { 
    // it will select all textboxes which id contain txtSortOrder 
    var textboxs = $('input:text').filter(function(){ 
     this.id.indexOf("txtSortOrder") !== -1; 
    }); 

    for (i = 0; i <= textboxs.length; i++) { 
     $('input:text:eq(' + i + ')').val(i + 1); 
    } 
} 
+0

+1 aimez cette solution parce qu'elle a le filtre. Avec le filtre, l'ordre est synchronisé. Cependant, je pense qu'il pourrait y avoir un petit problème avec le code parce que cela n'a pas fonctionné pour moi. – aron

Questions connexes