3 Stimmen

Der IE liest nicht den tatsächlichen Wert der Schaltfläche! Wie lässt sich das umgehen?

Ich habe eine Schaltfläche-Tag als soll und Eingabe-Tag, die anderen Text, was ich, was sein Wert zu tun, siehe unten hat.

<button value="<%=RS("field1")%>" name="change" id="change">Change</button>

Dies funktioniert dandy in Firefox, aber in IE.. dun, dun, dunnnn... der Wert der Schaltfläche kommt zurück als das Wort "ändern", die gemeint ist, um den Text der Schaltfläche angezeigt werden.

Normalerweise würde ich einfach ein Eingabe-Tag verwenden, aber ich glaube, ich kann nur ein Schaltflächen-Tag verwenden

Gibt es eine Möglichkeit, dieses Problem zu umgehen?

6voto

Faisal Punkte 19028

En w3schools.com :

Wichtig: Wenn Sie die Schaltfläche Element in einem HTML-Formular verwenden, können verschiedene Browsern unterschiedliche Werte übermittelt. Der Internet Explorer übermittelt den Text zwischen den <button> et </button> t den Inhalt des value-Attributs. Verwenden Sie das input-Element zum Erstellen von Schaltflächen in einem HTML-Formular.

Was Sie also tun sollten, ist <input type="button" />

3voto

Alohci Punkte 73204

In der Regel habe ich in solchen Situationen die Informationen in die Website eingebettet. name Attribut, so dass Sie

<button name="change:<%=RS("field1")%>" id="change:<%=RS("field1")%>">Change</button>

dann den serverseitigen Code verwenden, um den zurückgegebenen Wert zu verwerfen und dann den Namen wieder in ein Paar {Name, Wert) zu zerlegen.

(Beachten Sie, dass Ihre "id "s sowieso eindeutig sein müssen).

2voto

Erik van Brakel Punkte 22454

Soweit ich weiß, gibt es keine Möglichkeit, dies zu umgehen. Es ist einfach die Art und Weise IE behandelt die Schaltfläche Tag, wird es den Text zwischen dem öffnenden und schließenden Tag senden.

Wenn man bedenkt, dass man kein normales Eingabe-Tag für die Schaltfläche verwenden kann, wie wäre es dann mit einem versteckten Feld, um die Methode zu übermitteln, die man verwenden möchte?

<form action="somepage" method="POST">
    <!-- some fields here -->
    <input type="hidden" name="action" value="<%=RS("field1")%>" />
    <button name="change" id="change">Change</button>
</form>

1voto

G H Punkte 41

Mir scheint, dass der gewünschte Wert immer im Attribut "value" der Schaltfläche steht (da dies der Wert ist, den die anderen Browser übermitteln), warum also nicht einfach:

<button ... onclick="this.innerHTML=this.value;" ... >

0voto

IE8 sendet den Wert, es ist also nur ein Problem des IE7 (wahrscheinlich auch des 6, aber wen interessiert das schon).

Ein möglicher Trick besteht darin, den Wert als Teil des Textes auszublenden und dann im Schaltflächenklick-Ereignis (mit JavaScript) den Schaltflächentext auf diesen Wert zu ändern.

Das Endergebnis würde wie folgt aussehen:

<button value="<%=RS("field1")%>" name="change" onclick="this.innerHTML = this.childNodes[1].innerHTML;"><span>Change</span><span style="display: none;"><%=RS("field1")%></span></button>

Auch, wie Sie dies in Schleife haben, setzen Sie nicht die ID, um zu vermeiden, dass mehr als ein Element die gleiche ID teilen - es ist ungültig und wenn Sie die ID aus irgendeinem Grund benötigen, fügen Sie etwas eindeutig, um es in jeder Iteration.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X