• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

radio checked setzen und gleich die Aktion ausführen

selfmade01

New member
Hallo,

ich habe hier zwei radio buttons.
Diese sind für das Sperren von Formularfelder zuständig.
Klickt man den einen dann kann man nur in die ersten 4 Felder was eingeben klickt man den anderen dann in die anderen 4 Felder (insgesamt sind 8 Eingabefelder vorhanden)

Wenn ich auf den radio klicke funktioniert das schon sehr gut.

Ich möchte jedoch das beim Laden der Seite (diese wird durch ajax geladen) schon ein bestimmter radio angeklickt ist und das auch die entsprechenden Felder gesperrt werden.

hier einer der radiobuttons

Code:
<input type="radio" name="radio'.$week.'" id="v'.$week.'" onclick="this.form.phBMin'.$week.'.disabled = this.form.phBMax'.$week.'.disabled = this.form.ecBMin'.$week.'.disabled = this.form.ecBMax'.$week.'.disabled = true; this.form.phVMin'.$week.'.disabled = this.form.phVMax'.$week.'.disabled = this.form.ecVMin'.$week.'.disabled = this.form.ecVMax'.$week.'.disabled = false ;" /> <label for="v'.$week.'" class="inline">

der eine radio button hat dabei die id id="v'.$week.'" z.B. id="v1" und der andere
id="b'.$week.'" z.B. id="b1"


hoffe natürlich das ich diese onklick-funktion beim laden der Seite auslösen kann... so würde ich mir viel Programmierarbeit sparen

Grüße Jürgen
 
Klar, dass geht. Hast du zufällig JQuery?

Wenn ja, würde es mit der Trigger-Funktion (.trigger() | jQuery API Documentation) sehr einfach funktionieren.

Hallo

ja habe jquery, nur kenn ich mich damit nicht aus, bin schon froh das ich mir in javascript ein paar Sachen zusammenbasteln kann

Hast Du ein Beispiel dazu?

- - - Aktualisiert - - -

Hallo,
Danke für den link, aber mit dem Beispiel dort kann ich wenig anfangen... dazu fehlen mir die ganzen javascript-kenntnisse ... bin absoluter newbie und bräuchte bitte etwss Unterstützung
 
setz ersmal dein onclick krämpel in ein ordentliches jquery als zb
Code:
$("input[type='radio'][name='radio"+week+"']").click(function(){ hierderineFunktion });
#
week musst du natürlich vorher erstmal ins JS bekommen oder mit PHP und nem echo hart includen.

So und dann kannst du das ganze triggern, zB das erste
Code:
$("input[type='radio']:first").trigger( "click" );
Oder du steuerst die ID des Radios an, ganz wurst
 
Hallo
erstmal Danke für die Hilfe.
aber das mit dem javascript usw geht bei mir nicht so einfach (sorry ich bin newbie und kein Prog-Profi)

Ich habe eine webseite auf der in einer regsiterkarte eine tabelle mit <input> feldern geladen wird.
Pro Woche eine Zeile.
Wenn der IUser auf einen add-button klickt wird über ajax am Ende der Tabelle einen weitere Zeile angehängt
usw... ich habe das alles mit <div id="blabla"> erledigt.

da ich pro Zeile 8 Felder habe jedoch nur 4 Ausfüllbar sein dürfen muss ich die anderen sperren
Das habe ich mit den radio buttons gemacht

nur, muss dfer User da erstmal drauf klicken und das ist blöd... die müssen vorselektiert sein also netweder die einen 4 oder die anderen vier müssen gesperrt sein bis der User auf einen radio klickt und andere Felder frei gibt

Da ich die Seite nie neu lade sondern nur zusätzliche Zeilen hinzufüge weiss ich nicht ob ich das mit jquery so einfach machen kann

die Functions stehen ja oben im header der seite oder?

Ausserdem weiss ich gerade mal wie man bei javascript eine function aufruft
aber das mit dem jquery.. sorry ich habe noch keine Seite im Netz gefunden auf der das für Dummies erklärt wird

da stehen irgendwelche functions im script-teil aber so wie das aussieht laufen die immer..

sorry zumindets sieht das für mich so aus...

aus diesem Grund wäre ich Euch echt dankbar wenn ihr mir etwas Hilfe geben könnte damit ich den Einstieg leichter schaffe


Nochmals...alles was oben im script-teil steht das ist statisch bei mir und die $week bekomme ich nur über die Zeilen unten nachgeladen..
das musste ich so machen damit ich die <input> felder sauber ansprechen kann

Grüße jürgen

Ps. gibts nicht ein easy-going methode um die felder zuvor schon zu sperren...
ich meine also, meine onclick-variante einfach zu erweitern

Klar sieht es nicht gut aus und für Profis wohl total überzogen aber es funktioniert zumindest...

Wäre euch wirklich dankbar!!!
 
Zuletzt bearbeitet von einem Moderator:
setz ersmal dein onclick krämpel in ein ordentliches jquery als zb
Code:
$("input[type='radio'][name='radio"+week+"']").click(function(){ hierderineFunktion });
#
week musst du natürlich vorher erstmal ins JS bekommen oder mit PHP und nem echo hart includen.

So und dann kannst du das ganze triggern, zB das erste
Code:
$("input[type='radio']:first").trigger( "click" );
Oder du steuerst die ID des Radios an, ganz wurst

hallo,

kannst du mir das bitte etwas genauer mitteilen.. sorry ich checks nicht
besonders diese Aussage ===> week musst du natürlich vorher erstmal ins JS bekommen oder mit PHP und nem echo hart includen.

der name bzw. auch die id des radio-buttons wird bei stets in einem php-script generiert
dabei steht week für die Woche
somit kommt dann beim client folgendes an
z.B.
name=radio1 id=test1

da bei mir nur zeilen nachgeladen werden erfährt also mein script (js oder eben eine jquery function) oben nicht welche id nun gerade aktuell ist

sorry ich stehe total auf dem schlauch... bitte etwas ausführlicher erklären

Danke !


Grüße Jürgen
 
Zuletzt bearbeitet:
bau mal eine fiddle mit deinem script, natürlich ohne php, das musst du später selbstständig umsetzen, aber wir können dir das dann ins jquery umbauen, kein thema
 
bau mal eine fiddle mit deinem script, natürlich ohne php, das musst du später selbstständig umsetzen, aber wir können dir das dann ins jquery umbauen, kein thema

hallo.

meinst Du
Create a new fiddle - JSFiddle

ok das würde ich gerne machen.. aber dort kann ich doch keinen php-code eingeben
und da sich bei mir die id's via php ändern weiss ich jetzt nicht wie ich das dort implementieren sol

Grüße Jürgen

hier mal ein Beispielcode
Bitte nicht über die Syntax aufregen... ich habe hier viel weggelassen.. aber ich hoffe es wird dadurch klarer was mein problem ist

Code:
<html>
<html>
	<head>
</head>
<body>
<script>


</script>


<div class="setzdiebreiteauf-1200px"> // da ich ein css-framework verwende
<div> hier steht das was immer stehen soll und nicht verändert wird<div> button der die erste zeile via ajax laden wird</div></div>
// jetzt wird es interessant allles was hier kommt wird stes durch einen addnewrow-button nachgeladen
<div class="setzebreiteauf100%" id="erstezeile'.$woche'">
das ist die erste zeile
	<div> <input type="radio" name="radio'.$woche.'" id="felder_1-2'.$woche.'" </div>
	<div> <input type="radio" name="radio'.$woche.'" id="felder_3-4'.$woche.'" </div>
	<div><input type="text" id="feld1'.$woche.'" name="feld1'.$woche.'></div>
	<div><input type="text" id="feld2'.$woche.'" name="feld2'.$woche.'></div>
	<div><input type="text" id="feld3'.$woche.'" name="feld3'.$woche.'></div>
	<div><input type="text" id="feld4'.$woche.'" name="feld4'.$woche.'></div>
</div>

<div id="neuezeile-hier-wird-sie-ausgetauscht"> //dieser bereich wird immer ausgetauscht mit einer Zeile wie oben mit den radios und eingabefelder und einem neuen Button der wieder ein hinzufügen ermöglicht

<div><button id="ichbinder-add-new-row-button'.$woche.'"></div>
</div>


</div>

hier kommt der code der an die Stelle von <div id="neuezeile-hier-wir-sie-ausgetauscht">
Die Werte §woche ändern sich dann... so habe ich eindeutige id's für jedes eingabefeld und die radio-buttons

Code:
<div class="setzebreiteauf100%" id="erstezeile'.$woche'">
//das ist die temp zeile die stets nachgeladen wird bei klick auf den button
	<div> <input type="radio" name="radio'.$woche.'" id="felder_1-2'.$woche.'" </div>
	<div> <input type="radio" name="radio'.$woche.'" id="felder_3-4'.$woche.'" </div>
	<div><input type="text" id="feld1'.$woche.'" name="feld1'.$woche.'></div>
	<div><input type="text" id="feld2'.$woche.'" name="feld2'.$woche.'></div>
	<div><input type="text" id="feld3'.$woche.'" name="feld3'.$woche.'></div>
	<div><input type="text" id="feld4'.$woche.'" name="feld4'.$woche.'></div>
</div>

<div id="neuezeile-hier-wird-sie-angehängt"> //dieser bereich wird immer ausgetauscht mit einer Zeile wie oben mit den radios und eingabefelder und einem neuen Button der wieder ein hinzufügen ermöglicht

<div><button id="ichbinder-add-new-row-button'.$woche.'"></div>
</div>

meine Ziel ist:

Der user läd dieses Formular.
er bekommt im ersten Step eine Zeile mit 2 radio-bottons und 4 Eingabefelder.
Ich muss nun den user dazu zwingen entweder in die Felder 1-2 oder 3-4 nur was einzutragen.
Also muss ich irgendwie 2 felder sperren, welche ist egal.
Sperre ich nun felder 1-2 und der user will in 1-2 was eintragen so kann er auf den radio klicken damit die felder 3-4 gesperrt werden und 1-2 für ihn beschreibbar werden.

Ob ich das nun schon beim laden der seite mache oder ob das dann ausgelöst wird wenn der user seinen Cursor in das feld1 oder 2 setzt ist egal... hauptsache er kann dann nicht in die anderen felder was reinschreiben

Merkt er das er in die falschen felder was geschrieben hat und entscheidet er sich um und wählt statt felder 1-2 nun die felder 3-4 aus so müssen dann die vorher beschrieben felder wieder gelöscht werden

Ich muss das so machen sonst bekomme ich mit den werten probleme die in eine db geschrieben werden

Hoffe es wurde so etwas transparenter

Grüße Jürgen

- - - Aktualisiert - - -

bau mal eine fiddle mit deinem script, natürlich ohne php, das musst du später selbstständig umsetzen, aber wir können dir das dann ins jquery umbauen, kein thema

hab das mal probiert... aber meine seite bzw. Beispiel ist dazu zu umfangreich... ich müsste da ja den ganzen ajax-mist und alles andere mit einbauen...
habs trotzdem versucht

http://jsfiddle.net/ursm1jo9/
 
Zuletzt bearbeitet:
Du kannst ja die verschiedenen ids oder namen die durchnummeriert sind beim click event abfragen zb mit
Code:
$(this).attr('id');
oder
Code:
$(this).attr('name');
kann man direkt verwenden oder die nr daraus extrahieren und weiterverwenden!
 
Zurück
Oben