Obtention d'une erreur non détectée: erreur de syntaxe, expression non reconnue

J'essaie d'obtenir la valeur de Contact_LastName partir du HTML collé ci-dessous mais je reçois l'erreur suivante

 Uncaught Error: Syntax error, unrecognized expression: div #[email protected] 

Javascript:

  $('.rdContact').off("click").on("click", function (e) { e.preventDefault(); $(this).next("div").toggle(); $('.btn-success').off('click').on('click', function (e) { e.preventDefault(); var divId = $(this).closest('div').parent().attr('id'); var lnameval = $("div #"+ divId).closest('#Contact_LastName').val(); alert(lnameval); }); }); 

HTML:

 <input type="radio" class="rdContact" name="ContactGroup" value="[email protected]" style=""> <div class="row" id="u1g.com" style="display: none;"> <div class="col-md-6"> <div class="form-group"> <div class="col-md-3 control-label"> <label>Last Name:</label> </div> <div class="col-md-3"> <input class="form-control pr_input defaultText quiet reqrd" id="Contact_LastName" maxlength="50" name="ContactLastName" type="text" value=""> </div> </div> </div> <div class="col-md-6"> <div class="form-group"> <div class="col-md-3 control-label"> <label>First Name:</label> </div> <div class="col-md-3"> <input class="form-control defaultText quiet reqrd" id="Contact_FirstName" maxlength="50" name="ContactFirstName" type="text" value=""> </div> </div> </div> <div class="modal-footer"> <input type="button" value="Add Contact" id="btnSaveContact" class="btn btn-success"> <input type="button" value="Cancel" id="btnCancelContact" class="btn btn-default"> </div> </div> 

Cela se produit parce que [email protected] n'est pas une valeur valide pour l'identification d'un élément, donc jQuery est incapable d'analyser votre sélecteur.

À partir de la spécification HTML4 :

Les jetons ID et NAME doivent commencer par une lettre ([A-Za-z]) et peuvent être suivis d'un nombre quelconque de lettres, de chiffres ([0-9]), de tirets ("-"), de soulignement ("_") , Les deux-points (":") et les périodes (".").

La solution consiste à utiliser une valeur valide pour votre ID.

Voir également

Re: votre commentaire ci-dessous, vous obtenez undefined parce que vous utilisez le closest() incorrect (s'il vous plaît, suivez ce lien pour savoir ce que le closest() fait réellement).

Je suis prêt à parier que vous avez l' id Contact_LastName dans plusieurs endroits de votre page, et c'est un gros problème car les identifiants doivent être uniques.

Je suis également très curieux de savoir pourquoi vous choisissez la row div et récupérez son identifiant, afin que vous puissiez utiliser cette ID pour la ré-sélectionner dans la ligne suivante.

Au lieu de votre approche actuelle, débarrassez-vous de vos identifiants en double et utilisez ceci:

 $('.btn-success').off('click').on('click', function (e) { e.preventDefault(); var row = $(this).closest(".row"); var lnameval = row.find("input[name='ContactLastName']").val(); alert(lnameval); }); 

L'erreur provient de Sizzle, qui est utilisé par jQuery pour analyser le sélecteur d'élément.

Votre div a un identifiant étrange: [email protected] . Essayez d'utiliser des identifiants sans @ .