Bestimmte Formularfelder deaktivieren - nich so einfach
St.
- javascript
Moin Moin!
Ich hab da mal ne Frage: Aus dem Betreff geht es ja schon hervor: es geht um das Deaktivieren bestimmter Formularfelder nach bestimmten Kriterien.
Ich hab auf ner Seite eine Eingabemaske, welche aus drei Textfeldern und einem Optionsfeld besteht. Nun möchte ich, dass - wenn eine Eingabe in einem Textfeld erfolgt, das Optionsfeld deaktiviert wird und umgekehrt.
Ich hoffe, das ist so verständlich genug. Es geht dabei um eine Suchmaske und ich möchte diese benutzerfreundlich gestalten. Es geht nur entweder oder bei dem Suchvorgang.
Ferner weiß ich, dass ich da wohl anscheinend irgendwie mit onChange() oder so arbeiten müsste , aber meine JS-Kenntnisse sind leider nur sehr begrenzt (was sich ja ändern kann )
Wäre schön, wenn mir da jemand helfen könnte, danke schonmal!!
moin St. :)
Wäre schön, wenn mir da jemand helfen könnte, danke schonmal!!
auf jeden Fall sollte dir onchange weiterhelfen wie du schon richtig erkannt hast.
Das "Optionsfeld" kannst du dann mit Javascript wie folgt disabeln:
document.MyForm.MySelect.disabled=true;
liebe Grüße aus Berlin
lina-
Moin zurück, Frau Nachbarin :-P
Hmmm....na dann werd ich vielleicht noch einmal ein bißchen stöbern, ich hab bisher leider nichts brauchbares gefunden, aber ok... ;))
Bis dann,
Stephan aus Berlin
moin St. :)
Wäre schön, wenn mir da jemand helfen könnte, danke schonmal!!
auf jeden Fall sollte dir onchange weiterhelfen wie du schon richtig erkannt hast.
Das "Optionsfeld" kannst du dann mit Javascript wie folgt disabeln:
document.MyForm.MySelect.disabled=true;liebe Grüße aus Berlin
lina-
hi,
Hmmm....na dann werd ich vielleicht noch einmal ein bißchen stöbern
Fang bitte da an: </faq/#Q-09a>, </faq/#Q-09b>
gruß,
wahsaga
hi,
Hmmm....na dann werd ich vielleicht noch einmal ein bißchen stöbern
Fang bitte da an: </faq/#Q-09a>, </faq/#Q-09b>
gruß,
wahsaga
---------------------------------------------------------------------
@wahsaga: Darauf gehe ich nicht weiter ein :-))
Wie auch immer. Ich hab den Tip von lina mal ausprobiert, aber leider hat sich da nichts getan. Wenn ich den Befehl richtig verstanden habe, dann müsste ich doch hinter der Definition des Textfeldes schreiben:
..... onChange=document.MyForm.MySelect.disabled=true;>
Richtig?
Und nach meinem Verständnis müsste "MyForm" den Namen des Formulars und "MySelect" den Namen des (in meinem Fall) Optionsfeldes beinhalten, stimmt das? Wenn ja, dann muss mein Fehler woanders liegen. Könnte mir da jemand behilflich sein? Danke :-)
moin St. :)
..... onChange=document.MyForm.MySelect.disabled=true;>
Richtig?
Richtig, wenn du die gesamte Selectliste disabeln willst.
Und nach meinem Verständnis müsste "MyForm" den Namen des Formulars und "MySelect" den Namen des (in meinem Fall) Optionsfeldes beinhalten, stimmt das? Wenn ja, dann muss mein Fehler woanders liegen. Könnte mir da jemand behilflich sein? Danke :-)
Wenn du nur eine Option disabeln willst musst du
document.MyForm.MySelect.MyOption.disabled=true setzen
liebe Grüße aus Berlin
lina-
moin St. :)
..... onChange=document.MyForm.MySelect.disabled=true;>
Richtig?Richtig, wenn du die gesamte Selectliste disabeln willst.
Und nach meinem Verständnis müsste "MyForm" den Namen des Formulars und "MySelect" den Namen des (in meinem Fall) Optionsfeldes beinhalten, stimmt das? Wenn ja, dann muss mein Fehler woanders liegen. Könnte mir da jemand behilflich sein? Danke :-)
Wenn du nur eine Option disabeln willst musst du
document.MyForm.MySelect.MyOption.disabled=true setzenliebe Grüße aus Berlin
lina-
---------------------------------------------------------------------
Nun gut. Mein Formular heißt "searchform" und das zu deaktivierende Optionsfeld heißt "selectsearch[]". Müsste es dann also richtig
.... onChange=document.searchform.selectsearch[].disabled=true;> heißen?
Ich hab das nämlich ausprobiert und es war nichts von "disabled" zu merken *schnief*
LG Stephan
moin St. :)
Nun gut. Mein Formular heißt "searchform" und das zu deaktivierende Optionsfeld heißt "selectsearch[]". Müsste es dann also richtig
.... onChange=document.searchform.selectsearch[].disabled=true;> heißen?
du musst natuerlich noch angeben _welche_ Opotion du disabeln willst...
also zum Beispiel onChange=document.searchform.selectsearch[0].disabled=true;
wäre die erste Option.
Ich hab das nämlich ausprobiert und es war nichts von "disabled" zu merken *schnief*
nich weinen *tätschel* das kriegen wir schon hin...
liebe Grüße aus Berlin
lina-
moin lina- :)
Ich hab das nämlich ausprobiert und es war nichts von "disabled" zu merken *schnief*
nich weinen *tätschel* das kriegen wir schon hin...
arg... gleich fang ich selber an zu weinen.. hab übersehen, dass dein Beispiel ja doch falsch war!
also .... onChange=document.searchform.selectsearch[].disabled=true; geht so nicht
^^^^ ^^^^^^
a)deine Form?^ b) deine Option?
falls ich damit richtig liege, fehlt da natuerlich noch der Name der Auswahlliste.
Poste doch mal bitte einfach deine Form ;) dann seh ich da besser durch
liebe Grüße aus Berlin
lina-
moin lina- :)
Ich hab das nämlich ausprobiert und es war nichts von "disabled" zu merken *schnief*
nich weinen *tätschel* das kriegen wir schon hin...
arg... gleich fang ich selber an zu weinen.. hab übersehen, dass dein Beispiel ja doch falsch war!
also .... onChange=document.searchform.selectsearch[].disabled=true; geht so nicht
^^^^ ^^^^^^
a)deine Form?^ b) deine Option?falls ich damit richtig liege, fehlt da natuerlich noch der Name der Auswahlliste.
Poste doch mal bitte einfach deine Form ;) dann seh ich da besser durchliebe Grüße aus Berlin
lina-
-------------------------------------------------------------------
Oh...zu spät gelesen... ;)
Also: searchform ist das Formular an sich.
selectsearch[] ist das Optionsfeld - richtig!
Okay, hier ein Ausschnitt des Formulars....:
echo "
<form name="searchform" method="post" action="search1.php">
<div id="Layer1" style="position:absolute; left:500px; top:25px; width:252px; height:31px; z-index:1">
<select multiple='multiple' name='selectsearch[]' size='5'>
<option value='P1'>frutas/fruits</option>
<option value='P2'>vegetales/vegetable</option>
<option value='P3'>conservas/tinned food</option>
.
.
.
<input name="searchfirma" type="text" size="33" onChange=document.searchform.selectsearch[].disabled=true;>
<input name="searchansprechpartner" type="text" id="searchansprechpartner" size="33">
.
.
.
<input type="submit" name="Submit" value="Senden">
</p>
</form>
";
Ach ja, nebenbei sei noch bemerkt, dass das ganze über PHP läuft, was aber für das eigentliche irrelevant ist ;)
LG
moin St. :)
Okay, hier ein Ausschnitt des Formulars....:
Siehste - und schon bin ich der Lösung auf die Schliche gekommen ;)
<select multiple='multiple' name='selectsearch[]' size='5'>
^^^^
einen ungünstigeren Namen gibt es kaum ;)
<input name="searchfirma" type="text" size="33" onChange=document.searchform.selectsearch[].disabled=true;>
Geht vielleicht auch so... aber eigentlich setzt man javascript-Anweisungen auch in "Gänsefüßchen"...
Ach ja, nebenbei sei noch bemerkt, dass das ganze über PHP läuft, was aber für das eigentliche irrelevant ist ;)
stimmt... ;)
aaaalso - alles was du verändern musst ist:
<select multiple='multiple' name='selectsearch' size='5'>
(die eckigen Klammern im Namen würden sonst auf ein Array hinweisen)
und:
<input name="searchfirma" type="text" size="33" onchange="document.searchform.selectsearch.disabled=true">
damit sollte jetzt alles schick sein - oder?
liebe Grüße aus Berlin
lina-
moin St. :)
Okay, hier ein Ausschnitt des Formulars....:
Siehste - und schon bin ich der Lösung auf die Schliche gekommen ;)<select multiple='multiple' name='selectsearch[]' size='5'>
^^^^
einen ungünstigeren Namen gibt es kaum ;)
----------------------------------------------------------------
Wieso das denn?? Naja, ist ja auch egal *gg*
<input name="searchfirma" type="text" size="33" onChange=document.searchform.selectsearch[].disabled=true;>
Geht vielleicht auch so... aber eigentlich setzt man javascript-Anweisungen auch in "Gänsefüßchen"...
--------------------------------------------------------------
Hmmm, vielleicht könnte es daran liegen.
Ach ja, nebenbei sei noch bemerkt, dass das ganze über PHP läuft, was aber für das eigentliche irrelevant ist ;)
stimmt... ;)aaaalso - alles was du verändern musst ist:
<select multiple='multiple' name='selectsearch' size='5'>
(die eckigen Klammern im Namen würden sonst auf ein Array hinweisen)
------------------------------------------------------------------
So soll es ja auch sein ;)) Also das mit dem Array ist Bedingung! ;)
und:
<input name="searchfirma" type="text" size="33" onchange="document.searchform.selectsearch.disabled=true">damit sollte jetzt alles schick sein - oder?
liebe Grüße aus Berlin
lina-
moin St. :)
einen ungünstigeren Namen gibt es kaum ;)
Wieso das denn?? Naja, ist ja auch egal *gg*
Das hat Axel wunderbar erklärt...
aaaalso - alles was du verändern musst ist:
<select multiple='multiple' name='selectsearch' size='5'>
(die eckigen Klammern im Namen würden sonst auf ein Array hinweisen)
So soll es ja auch sein ;)) Also das mit dem Array ist Bedingung! ;)
Ja und? der _Name_ einer Select-Box kann aber kein Array an sich sein sein.
Damit kommt HTML klar - aber Javascript nicht.
Ich denke dass für diesen Fall Axels Idee sehr gut funktioniert.
liebe Grüße aus Berlin
lina-
So soll es ja auch sein ;)) Also das mit dem Array ist Bedingung! ;)
Ja und? der _Name_ einer Select-Box kann aber kein Array an sich sein sein.
Damit kommt HTML klar - aber Javascript nicht.
Ich denke dass für diesen Fall Axels Idee sehr gut funktioniert.liebe Grüße aus Berlin
lina-
-----------------------------------------------------------------
Doch in dem Fall ist das mit dem Namen wichtig, weil ich das Optionsfeld anhand des Namens auswerte und dann bspw. die Anzahl der angeklickten Werte an eine PHP-Datei übergebe...es ging in der Beziehung nicht anders.
Wie auch immer, vielen vielen Dank für die Hilfe!!!
Stephan
lina-
--------------------------------------------------------------------
Eine Frage hätte ich da schon noch (natürlich an alle ;) ), weil ich jetzt überlege, wie ich mehrere Objekte disablen kann.
onChange="document.forms['searchform'].elements['selectsearch[]'].disabled=true;">
^^Dies "gilt" ja quasi für das Deaktivieren eines Elements. Wie mache ich das für mehrere Objekte? Geht das überhaupt?
LG,
Stephan
moin St. :)
onChange="document.forms['searchform'].elements['selectsearch[]'].disabled=true;">
^^Dies "gilt" ja quasi für das Deaktivieren eines Elements. Wie mache ich das für mehrere Objekte? Geht das überhaupt?
natürlich. dazu baust du dir am besten eine Javascript-Funktion.
In dieser kannst du dann so viele Elemente disabeln wie du möchtest ;)
zb.:
function disableAll(){
var allElements=document.MyForm.elements;
for(var i=0;i<allElements.length;i++){
allElements.disable=true;
}
}
wuerde alle Elemente der Form disabeln
liebe Grüße aus Berlin
lina-
function disableAll(){
var allElements=document.MyForm.elements;
for(var i=0;i<allElements.length;i++){
allElements.disable=true;
}
}
> wuerde alle Elemente der Form disabeln
>
>
> liebe Grüße aus Berlin
> lina-
\--------------------------------------------------------
Ahh....meine Güte, ich merk schon, ich muss noch viel lernen, was JS betrifft \*grins\*
Nur überlege ich jetzt folgendes: Die von dir angegebene Funktion deaktiviert ja nun alle Elemente, die sich auf der Seite befinden. Das eine Element (nämlich das, in dem Eingaben getätigt wurden) soll ja nicht deaktiviert werden.
Könnte man das vielleicht so definieren?
~~~javascript
var Element1=document.MyForm.element1;
var Element2=document.MyForm.element2;
Element1.disable=true;
Element2.disable=true;
}
}
Wäre ja schön, wenn's so gehen würde...
LG zurück nach Berlin ;)
Stephan
moin St. :)
Könnte man das vielleicht so definieren?
var Element1=document.MyForm.element1;
var Element2=document.MyForm.element2;Element1.disable=true;
Element2.disable=true;}
}
> Wäre ja schön, wenn's so gehen würde...
könnte man ;)
Wenn ich dich jetzt richtig verstanden habe möchtest du dein onchange so machen:
~~~html
<input ... onchange="disableElements(this)"/>
<script type="text/javascript">
function disableElements(element){
var elements=document.MyForm.elements;
for(var i=0;i<elements.length;i++){
if(elements[i]!=element){
elements[i].disable=true;
}
}
}
</script>
Diese Funktion disabled alle Elemente ausser das was du als Parameter übergeben hast (also das Element bei das onchange definiert wurde)
liebe Grüße aus Berlin
lina-
PS: keine Garantie für den code - habs nicht getestet.
könnte man ;)
Wenn ich dich jetzt richtig verstanden habe möchtest du dein onchange so machen:
<input ... onchange="disableElements(this)"/>
> ~~~javascript
> <script type="text/javascript">
> function disableElements(element){
> var elements=document.MyForm.elements;
> for(var i=0;i<elements.length;i++){
> if(elements[i]!=element){
> elements[i].disable=true;
> }
> }
> }
> </script>
>
----------------------------------------------------------------
Da meine JS-Kenntnisse noch immer nur sehr rudimentär sind, kannst du damit schon Recht haben *grins*
-----------------------------------------------------------------
Diese Funktion disabled alle Elemente ausser das was du als Parameter übergeben hast (also das Element bei das onchange definiert wurde)
-----------------------------------------------------------------
So kann man es auch definieren.
Wenn ich eine oder mehrere Optionen im Optionenfeld angeklickt habe, soll es nicht mehr möglich sein, etwas in die Textfelder zu schreiben. So weit die Theorie. Die Funktion von dir hat leider nicht funktioniert.
Ich habe es an späterer Stelle noch mit
<script language="javascript">
function disableElements(){
document.searchform.searchfirma.disable=true;
document.searchform.searchansprechpartner.disable=true;
document.searchform.searchort.disable=true;
}
</script>
... und <... onChange="disableElements();"> ausprobiert, auch das hat leider nicht funktioniert :-((
LG zurück,
Stephan
Könnte man das vielleicht so definieren?
var Element1=document.MyForm.element1;
var Element2=document.MyForm.element2;Element1.disable=true;
Element2.disable=true;}
}
> > ........
> liebe Grüße aus Berlin
> lina-
>
> PS: keine Garantie für den code - habs nicht getestet.
Na geil...das nenn ich mal einen richtigen Vertipper....und dann auch noch andauernd \*grins\*
Super...mit disable"D" hat es ohne Probleme funktioniert!!
Danke Axel,
danke "Süße" für die Mühe \*grins\*
LG aus Berlin,
Stephan
Scheint wohl nicht so. Ich habe das gerade mit folgender Funktion ausprobiert:
<script language="javascript">
function disableElements(){
var Element1=document.searchform.searchfirma;
var Element2=document.searchform.searchansprechpartner;
var Element3=document.searchform.searchort;
Element1.disable = true;
Element2.disable = true;
Element3.disable = true;
}
}
</script>
Damit wollte ich die drei Elemente "searchfirma, searchansprechpartner und searchort" deaktivieren, wenn ich denn eine Änderung im Optionsfeld mache.
Der Aufruf erfolgt dann so:
<select multiple='multiple' name='selectsearch[]' size='5' onChange="disableElements();">
Es kam die Fehlermeldung "Objekt erwartet".... :-((((
moin St. :)
<script language="javascript">
function disableElements(){
var Element1=document.searchform.searchfirma;
var Element2=document.searchform.searchansprechpartner;
var Element3=document.searchform.searchort;Element1.disable = true;
Element2.disable = true;
Element3.disable = true;
}
}
</script>
Ist ein bisschen umständlich findest du nicht?
wie wäre es denn wenn du die Elemente direkt ansprichst: document.MyForm.MyElement.disable=true;
die Variablen brauchst du in diesem Fall nicht erst erstellen. Das macht man eigentlich nur, wenn man öfter auf das Objekt zugreift und dann nicht jedesmal auf das document zugreifen muss.
liebe Grüße aus Berlin
lina-
Hallo,
document.MyForm.MyElement.disable=true;
^Wo wird die Eigenschaft "disable" eines Formularelements definiert und was soll sie darstellen?
viele Grüße
Axel
moin Axel :)
document.MyForm.MyElement.disable=true;
^Wo wird die Eigenschaft "disable" eines Formularelements definiert und was soll sie darstellen?
<file:///c:/Dokumente%20und%20Einstellungen/bn/Eigene%20Dateien/Texte/References/selfhtml81/html/referenz/attribute.htm#input@title =in der Attributreferenz> - oder wolltest du mich jetzt nur darauf hinweisen, dass ich ein "d" vergessen habe?
liebe Grüße aus Berlin
lina-
arg.. verlinken will gelernt sein - mein lokales selfhtml nützt natürlich nich viel ;)
also:
die Attributreferenz zu input
Hallo lina.
arg.. verlinken will gelernt sein - mein lokales selfhtml nützt natürlich nich viel ;)
Einen schönen Dienstag noch.
Gruß, Ashura
moin Ashura :)
Hallo lina.
arg.. verlinken will gelernt sein - mein lokales selfhtml nützt natürlich nich viel ;)
ui... nein! Vielen Dank! Werd ich daheim direkt mal probieren
liebe Grüße aus Berlin
lina-
Hallo lina-
oder wolltest du mich jetzt nur darauf hinweisen, dass ich ein "d" vergessen habe?
Ja, ein wichtiges, und zwar schon in mehreren rückwärtigen Postings ;-))
viele Grüße
Axel
moin Axel :)
oder wolltest du mich jetzt nur darauf hinweisen, dass ich ein "d" vergessen habe?
Ja, ein wichtiges, und zwar schon in mehreren rückwärtigen Postings ;-))
@ St. vergiss um Himmels willen nicht das "d" ;)
Axel: Krümelkacker! :P
liebe Grüße aus Berlin
lina-
Hi,
aaaalso - alles was du verändern musst ist:
<select multiple='multiple' name='selectsearch' size='5'>
(die eckigen Klammern im Namen würden sonst auf ein Array hinweisen)
So soll es ja auch sein ;)) Also das mit dem Array ist Bedingung! ;)
Dann wird es etwas komplizierter, siehe auch http://aktuell.de.selfhtml.org/artikel/javascript/oomodell/index.htm#internal.
so short
Christoph Zurnieden
Hallo,
<form name="searchform" method="post" action="search1.php">
...
<select multiple='multiple' name='selectsearch[]' size='5'>
...
<input name="searchfirma" type="text" size="33" onChange=document.searchform.selectsearch[].disabled=true;>
1. Das Attribut onchange erwartet _einen_ Wert, dessen Inhalt als %SCRIPT interpretiert werden kann:
onChange="document.searchform.selectsearch[].disabled=true;"
2. Bei der Interpretation stolpert der JavaScript-Interpreter über die Schreibweise "selectsearch[]". Auch JavaScript kennt Arrays. Du meinst aber hier kein Array sondern den Namen des SELECT-Elements. Bei solchen Namen kann keine Kurzform-Schreibweise mehr angewendet werden. Hier musst Du vollständig schreiben, was Du meinst:
onChange="document.forms['searchform'].elements['selectsearch[]'].disabled=true;"
http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines Schema 3.
Ach ja, nebenbei sei noch bemerkt, dass das ganze über PHP läuft, was aber für das eigentliche irrelevant ist ;)
Ja, deshalb poste dann bitte auch keinen PHP-Code, sondern den Quellcode, der im Browser ankommt.
viele Grüße
Axel
Hallo,
<form name="searchform" method="post" action="search1.php">
...
<select multiple='multiple' name='selectsearch[]' size='5'>
...
<input name="searchfirma" type="text" size="33" onChange=document.searchform.selectsearch[].disabled=true;>
Das Attribut onchange erwartet _einen_ Wert, dessen Inhalt als %SCRIPT interpretiert werden kann:
onChange="document.searchform.selectsearch[].disabled=true;"Bei der Interpretation stolpert der JavaScript-Interpreter über die Schreibweise "selectsearch[]". Auch JavaScript kennt Arrays. Du meinst aber hier kein Array sondern den Namen des SELECT-Elements. Bei solchen Namen kann keine Kurzform-Schreibweise mehr angewendet werden. Hier musst Du vollständig schreiben, was Du meinst:
onChange="document.forms['searchform'].elements['selectsearch[]'].disabled=true;"
http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines Schema 3.
Ach ja, nebenbei sei noch bemerkt, dass das ganze über PHP läuft, was aber für das eigentliche irrelevant ist ;)
Ja, deshalb poste dann bitte auch keinen PHP-Code, sondern den Quellcode, der im Browser ankommt.viele Grüße
Axel
---------------------------------------------------------------------
Ay caramba....
onChange="document.forms['searchform'].elements['selectsearch[]'].disabled=true;"
^^ so hat es funktioniert! Das ist ja ne witzige Sache!! Dankeschön...dank auch an dich Lina für die Ausdauer ;))
LG,
Stephan
moin St. :)
Nun gut. Mein Formular heißt "searchform" und das zu deaktivierende Optionsfeld heißt "selectsearch[]". Müsste es dann also richtig
.... onChange=document.searchform.selectsearch[].disabled=true;> heißen?
du musst natuerlich noch angeben _welche_ Opotion du disabeln willst...
also zum Beispiel onChange=document.searchform.selectsearch[0].disabled=true;
wäre die erste Option.
-----------------------------------------------------------------
Ich möchte ja, dass das gesamte Optionsfeld deaktiviert wird, dass man also innerhalb des Optionsfeldes keine Änderungen machen kann.
Danke für deine Hilfe!!! :-)
LG Stephan
hi,
@wahsaga: Darauf gehe ich nicht weiter ein :-))
Und warum bitte weigerst du dich, vernünftig zu zitieren?
gruß,
wahsaga