2009-06-15 11 views
12

(answers aggregated into another question)jquery Wähler kann nicht von versteckten Feld lesen

Die folgende jquery 1.3.2 Code funktioniert:

<input type="select" value="236434" id="ixd" name='ixd' /> 

<script> 
console.log($('#ixd')); 
console.log($("input[name='ixd']")); 
</script> 

Console zeigt:

[Eingabe # IxD 236434]

[Eingabe # IxD 236434]

Wenn Sie den Eingang jedoch auf "Versteckt" setzen, wird verhindert, dass die Selektoren arbeiten. Irgendwelche Hinweise?

<input type="hidden" value="236434" id="ixd" name='ixd' /> 

<script> 
console.log($('#ixd')); 
console.log($("input[name='ixd']")); 
</script> 

Console zeigt:

[]

[]

Antwort

27

nicht sicher, warum das andernfalls würde. Ich mache das gleiche bei der Arbeit regelmäßig, und es funktioniert unabhängig davon, ob das Formfeld versteckt ist oder nicht.

Vielleicht versuchen:

<input type="hidden" value="236434" id="ixd" name='ixd' /> 

<script> 
    console.log($("#xid").val()) 
</script> 

dass Sie den Wert des verborgenen Feldes erhalten. Um den Wert aus einem Formularfeld zu erhalten, muss die Methode .val() verwendet werden.

+2

+1: Er sollte() verwenden .val den Wert des Feldes abzurufen. –

+1

Versuchte, dass ich versuchte, darauf hinzuweisen, dass die Selektoren nicht funktionierten, anstatt die Ausgabe zu verwenden :) – Andy

+0

Auch dieser Code funktioniert nicht! – Andy

2

Dies kann ein Problem mit der Konsole sein. Ich habe einen Test durchgeführt und es scheint immer noch die Instanz des Elements zu greifen. Ich kann nicht genau sagen, was du hier vorhast.

Wenn Sie nur, ob das Objekt zu bestätigen versuchen, gefunden wurde überprüfen Sie die Eigenschaft length

console.log($('#xid').length); 

Wenn Sie den Wert des Feldes zu erhalten versuchen, verwenden Sie dann die val Methode

console.log($('#xid').val()); 

Schließlich ist es möglich, dass das DOM in Ihrer Lösung noch nicht vollständig geladen ist. Stellen Sie sicher, dass Sie Ihre Logik in einen document.ready-Aufruf einbinden.

$(document).ready(function() { 
    console.log($('#xid').val()); 
}); 
+0

Vielen Dank, das ist die Lösung - aber warum funktioniert das nicht in diesem Fall, wenn die

1

Wenn Sie dies in ASP.Net tun, überprüfen Sie die ID Ihres Steuerelements zur Laufzeit über die Option Quelle anzeigen in Ihrem Browser. Möglicherweise stellen Sie fest, dass Ihre Steuerelement-ID nicht erwartet wird, wenn Ihr Steuerelement beispielsweise auf einer Inhaltsseite deklariert ist. In diesem Fall würde ihm eine ID zugewiesen, die von seiner Masterseite gesteuert wird. Anstatt die ID in Ihrer jQuery fest zu codieren, können Sie auf ihre ClientID-Eigenschaft verweisen, indem Sie die ASP.Net-Inline-Syntax verwenden, die Sie auch vor Änderungen in der Masterhierarchie oder der Inhaltsseiten-Steuerhierarchie schützt.

So ...

$('#<%= myHiddenControl.ClientID %>').val(); 

... wäre eine bessere Wahl als ...

$('#ctl00_ContentPlaceHolder1_ctl00_ContentPlaceHolder1_myHiddenControl').val(); 

... obwohl sie würden beide arbeiten.

0

Wenn keine der oben genannten Arbeit versuchen

$('#xid').attr('value');