2013-12-23 5 views
10

Ich habe einen JavaScript-Code, der den Inhalt einer HTML-Textbox liest und an IE und Chrome arbeitet, aber von Firefox nicht erkannt wird.JQuery-Eingabe [Name = ""] wird in Firefox nicht erkannt

HTML-Code:

<div id="SetInner_Form">     
    <form name="Set_Password" method="post" action=""> 
     Email Address &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     <input class="Auth" name="SetPwd_Username" type="text"/><br/><br/> 
     New Password &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input class="Auth" name="SetPwd_NewPwd" type="password"/><br/><br/> 
     Retype Password &nbsp;<input class="Auth" name="SetPwd_RetypePwd" type="password"/><br/><br/> 
     <div id="SetPwdResultWrapper"> 
      <div id="SetPwdResult" class="Validation_2"></div><br/> 
     </div> 
     <div id="RedirectLink" align="center" class="NoDisplay">Click <a href='https://localhost/webapp/index.aspx'>here</a> to go to main page</div><br/> 
    </form> 
    <div id="SetPwdBtnWrapper"> 
     <input id="SetPwdBtn" name="SetPwdBtn" type="submit" value="Confirm" align="center"/> 
    </div> 
    <img id="LoadingIcon_auth"/> 
</div> 

Javascript-Code:

$("input[name=SetPwd_Username]").val() 

Exception (auf Firefox-Konsole):

Uncaught exception: Syntax error, unrecognized expression: input[name=SetPwd_Username 

JQuery Version ist: jquery-1.6.4.min. js

Th Das seltsame Teil ist, kann Firefox die anderen HTML-Elemente mit Ausnahme der SetPwd_Username

erkennen Ich fehle etwas?

+0

ja Sie den Teil verpasst, wenn dieser Wert string und verlangt, dass Sie in einfache Anführungszeichen setzen –

+0

Versuchen Sie es zu lesen 'something = $ (...). val()' oder weisen Sie einen Wert '$ (...). val (something)' zu? –

+0

sieht gut aus http://jsfiddle.net/arunpjohny/496rc/1/ –

Antwort

30

Basierend auf Ihrer Fehlermeldung, vergessen Sie das Schließen ] im Selektor.

Dies:

"input[name=SetPwd_Username" 

nicht gültig sein, und erzeugt die genaue Fehlermeldung.


Chrome gibt keinen Fehler für den ungültigen Selektor. Es scheint, dass seine .querySelectorAll() Implementierung es nicht so ablehnt, wie es sollte. Das ist der Grund für den Unterschied.

Da Firefox den Selektor korrekt zurückweist, wird standardmäßig die Sizzle-Engine verwendet, die den Fehler auslöst. Da Chrome es nicht ablehnt, erhalten Sie den Fehler nicht.

+0

verwendet Dieses Ergebnis hat bei mir funktioniert!Ich habe es versäumt, die schließende Klammer einzuschließen. Follow-up-Frage, gibt es ein Tool da draußen, mit dem ich diese Korrekturen überprüfen oder überprüfen kann? Weil ich nur notepad ++ als Javascript-Editor benutze. – ChiSen

+0

Sie meinen missgebildete Selektoren? Nicht, dass ich das achte, außer nach Fehlermeldungen in der Konsole zu suchen. –

1

Versuchen Sie, den Namen des Feldes in einfache Anführungszeichen zu setzen.

$("input[name='SetPwd_Username']").val() 
      ^here  ^and here 
+3

Dies ist keine Voraussetzung. Es ist vollkommen ohne die Anführungszeichen gültig. –

+0

@cookiemonster Das nehme ich an! – HICURIN

+1

Dies sollte mit oder ohne die Anführungszeichen funktionieren. Docs sagen, dass es ein nicht abgekürztes einzelnes Wort oder eine zitierte Zeichenfolge sein kann. http://api.jquery.com/attribute-equals-selector/ – Masterbuddha

-1

müssen Sie bemerken: eine diffirence zwischen CSS und jQuery, dass sysmbon "'" ist in jquery

$("input[name='SetPwd_Username']") 

und in css

input[name=SetPwd_Username]{ 
}