2010-02-03 5 views
1

J'ai un formulaire caché avec une liste dont j'ai besoin de sélectionner une option à partir du moment où un utilisateur souhaite afficher ce formulaire. J'utilisais var assignée = 'noms de personnes'; JQuery (option '# edit-form' [value = '+ option +']: first '). Attr ("selected", "selected");Problème lors de la sélection d'un élément dans une boîte SELECT avec jQuery avec un quot

J'ai essayé de le faire, mais cela ne fonctionne pas comme la valeur dans la balise option est spécifiée avec le \ ainsi, donc il ne trouvera pas un match

jQuery('#edit-form option[value='+option.replace(/\'/,'\\\'')+']:first').attr("selected", "selected"); 

fait Il présente façon le suivant ma seule option?

jQuery('#edit-form option').each(function(){ 
    if(jQuery(this).val() == option) {   
    jQuery(this).attr("selected", "selected"); 
    return false; 
    } 
}); 

une page de test

<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 

    <script> 
    //test vars 
    var option1 = "option two"; 
    var option2 = "option '"; 
    var option = option2; 

    $(document).ready(function(){ 
    $('#edit-form [name=select1] option').each(function(){ 
     if($(this).val() == option) {   
    $(this).attr("selected", "selected"); 
    return false; 
     } 
    }); 

    $('#edit-form [name=select2] option[value='+option+']:first').attr("selected", "selected"); 
    option = option.replace(/\'/,'\\\''); 
    $('#edit-form [name=select3] option[value='+option+']:first').attr("selected", "selected"); 
    }); 
    </script> 
</head> 
<body> 
    <form id="edit-form"> 
    <select name=select1> 
    <option value="option one">option one</option> 
    <option value="option two">option two</option> 
    <option value="option two">option two</option> 
    <option value="option \'">option \'</option> 
    <option value="option '">option '</option> 
    </select> 
    <select name=select2> 
    <option value="option one">option one</option> 
    <option value="option two">option two</option> 
    <option value="option two">option two</option> 
    <option value="option \'">option \'</option> 
    <option value="option '">option '</option> 
    </select> 
    <select name=select3> 
    <option value="option one">option one</option> 
    <option value="option two">option two</option> 
    <option value="option two">option two</option> 
    <option value="option \'">option \'</option> 
    <option value="option '">option '</option> 
    </select> 
</body> 
</html> 

Répondre

2

Qu'en est-:

jQuery('#edit-form option[value="'+option+'"]:first').attr("selected", "selected"); 

Notez l'utilisation des caractères " et '.

E.g. Ce sont toutes les chaînes valides:

"Valid 'string'" 
'valid "string"' 
// also valid with escape chars 
"valid \"string" 
'valid \'string' 

mais pas ces

"not valid "string"" 
'not valid 'string'' 

Vous pouvez voir cela avec la coloration syntaxique.

Edit:

Works pour moi si j'utilise ceci:

$('#edit-form select[name="select3"] option[value="'+option+'"]').first().attr("selected", "selected"); 

Note: J'utilise .first() au lieu de :first et select[name="select3"] appropriée. Assurez-vous que vous utilisez des sélecteurs jQuery appropriés.

+0

Merci, mais si vous aviez essayé avec la page d'exemple, vous auriez vu que cela ne fonctionne pas non plus. – Cornelis

+0

@Cornelis: Cela fonctionne pour moi, ajouté la commande correcte que j'utilise. –

+0

D'accord, cela a effectivement fait marcher ça! Merci pour cela, jQuery agissant bizarre parfois je vois. – Cornelis