SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > HTML, CSS und JavaScript Help!
Hilfe Community Kalender Heutige Beiträge Suchen

HTML, CSS und JavaScript Help! Hier gibt es Hilfe zu HTML, CSS und JavaScript Problemen

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 31.01.2007, 18:11:22
Benutzerbild von juergen
juergen juergen ist offline
Junior Member
 
Registriert seit: Nov 2004
Ort: Schmitten
Alter: 65
Beiträge: 318
Absendebutton disablen

Hallo Forum,

ich habe ein Formular und überprüfe es mit JS
HTML-Code:
<script language="JavaScript">
  <!--
function chkBewerten() {

// Headline
if (document.kontakt.headline.value == "") {
alert("Hinweistext");
document.kontakt.headline.style.backgroundColor = '#ff0000';
document.getElementById("headline").style.color = '#ff0000';
document.getElementById("headline").style.fontWeight = "bold";
document.kontakt.headline.focus();
return (false);
}

// Submit Button deaktivieren

function Localize(pStr){return pStr;}

var ProcessingText = Localize("<?echo $_binbutton_text; ?>");
var cnt=0;
function doValidate(f){
f.BIN_button.value=ProcessingText;
f.BIN_button.disabled=true;
if (cnt==0)f.submit();
cnt++;
}
}
//-->
</script>
Mein Formular habe ich so definiert.

HTML-Code:
<form name="kontakt" method="post" action="eintragen.php" onsubmit="return chkBewerten();">
Wenn ich nun das Formular absende obwohl das Feld "headline" leer ist so wird mir das auch in der Alertbox angezeigt und der Absendebutton wird deaktiviert. Sobald ich die Alertbox bestätige wird das Formular dennoch abgesendet.
Kann mir einer sagen warum das Formular abgesendet wird und die Funktion chkBewerten() das nicht verhindert? Der Button soll erst deaktiviert werden wenn alle Felder geprüft und richtig sind.

Ich bin für jeden Tip dankbar.
__________________
--------------------------------
Gruß Jürgen

www.kenyasafaris.de

Geändert von juergen (01.02.2007 um 07:51:54 Uhr)
Mit Zitat antworten
  #2  
Alt 31.01.2007, 21:58:56
Andes Andes ist offline
Member
 
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
AW: Absendebutton disablen

Mich wundert, dass deine Funktion überhaupt anspringt. In der Funktion/Bedingung heißt dein Formular 'bewerten' obwohl du im Form-Tag den Namen 'kontakt' definiert hast.
__________________
Grüße Andes
Mit Zitat antworten
  #3  
Alt 01.02.2007, 07:56:09
Benutzerbild von juergen
juergen juergen ist offline
Junior Member
 
Registriert seit: Nov 2004
Ort: Schmitten
Alter: 65
Beiträge: 318
AW: Absendebutton disablen

Hallo Andes,

nur ein Schreibfehler hier im Forum. Ich habe es berichtigt. So ist das JS auch bei mir im richtigen Leben. Kannst Du mir weiterhelfen?
__________________
--------------------------------
Gruß Jürgen

www.kenyasafaris.de
Mit Zitat antworten
  #4  
Alt 01.02.2007, 08:11:22
Benutzerbild von juergen
juergen juergen ist offline
Junior Member
 
Registriert seit: Nov 2004
Ort: Schmitten
Alter: 65
Beiträge: 318
AW: Absendebutton disablen

Ich habe nun mal etwas geändert. Um die Funktion function Localize(pStr) überhaubt auszuführen muß der Wert disbutton auf true sein. Nun wird die Überprüfung durchgefürt aber die Funktion function Localize(pStr) wird nicht ausgeführt selbst wenn der Wert true ist.
HTML-Code:
<script language="JavaScript">
  <!--
function chkBewerten() {

disbutton = true;

// Headline
if (document.kontakt.headline.value == "") {
alert("Hinweistext");
document.kontakt.headline.style.backgroundColor = '#ff0000';
document.getElementById("headline").style.color = '#ff0000';
document.getElementById("headline").style.fontWeight = "bold";
document.kontakt.headline.focus();
disbutton = false;
return (false);
}

// Submit Button deaktivieren

if (disbutton == true) {

function Localize(pStr){return pStr;}

var ProcessingText = Localize("<?echo $_binbutton_text; ?>");
var cnt=0;
function doValidate(f){
f.BIN_button.value=ProcessingText;
f.BIN_button.disabled=true;
if (cnt==0)f.submit();
cnt++;
}
}
return disbutton;
}
//-->
</script>
Nun wird die Funktion function Localize(pStr) nicht mehr aufgerufen wenn das Feld leer ist. Das Formular wird nicht abgesendet solange ein Feld leer ist. Wenn es nicht leer ist wird die Funktion function Localize(pStr) aber auch nicht mehr ausgeführt! Der Submitbutton wird nicht disabled.
Ist das überhaubt möglich eine Funktion inerhalb einer anderen Funktion auszuführen?

Danke für Eure Hilfe.
__________________
--------------------------------
Gruß Jürgen

www.kenyasafaris.de
Mit Zitat antworten
  #5  
Alt 01.02.2007, 09:37:35
Andes Andes ist offline
Member
 
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
AW: Absendebutton disablen

Ich versteh den zweiten Teil nicht wirklich. Dazu müsstest du mal noch etwas erklären.
Für was soll die Funktion Localize gut sein? Die gibt doch nur den Wert zurück, den du bei Funktionsaufruf übergibst. Da kannst du auch gleich den Wert in der Variable 'ProcessingText' speichern.
Wann wird die Funktion doValidate() aufgerufen und wo kommt 'f' her?
Ja man kann eine Funktion innerhalb einer anderen Funktion aufrufen. Kommt halt darauf an wie du sie aufrufen möchtest. Wenn du doValidate() von außen aufrufen möchtest, müsstest du das ganze als ein Objekt/Klasse definieren.

Edit:
Mehrere return-Aufrufe sind etwas Sinnfrei. Du sendest am Ende den Status von disbutton, der true oder false sein kann. Da brauchst du nicht den return innerhalb der ersten Bedingung, da du ja dort den Status von disbutton änderst.
So wie ich den zweiten Teil sehe, ist der auch etwas überflüssig. Du setzt dort den Status auf true und somit würde das Formular gesendet, was die Ausgabe des Textes und das 'disabled' des Button überflüssig macht. Es wird eh nicht mehr angezeigt.
Auch, wenn du auf der Seite bleibst nach dem Senden würde das keinen Sinn ergeben. Da Javascript nur so lange gültig ist, wie die Seite geladen ist.
__________________
Grüße Andes

Geändert von Andes (01.02.2007 um 09:46:34 Uhr)
Mit Zitat antworten
  #6  
Alt 01.02.2007, 12:53:20
Raketenmann Raketenmann ist offline
Junior Member
 
Registriert seit: Jun 2004
Beiträge: 473
AW: Absendebutton disablen

Nimm doch einfach mal die Klammer beim 'return (false);' weg.

Ich notiere immer 'return false;' und SelfHTML z.B. macht es auch so...


Oder gib dem Absendebutton statt 'type="submit"' den 'type="button"'. Dann passiert erstmal gar nichts, wenn du ihn klickst. Absenden kannst du nach Eingabeprüfung in deinem JavaScript mit der 'submit()' Methode des Formulars.
Mit Zitat antworten
  #7  
Alt 01.02.2007, 12:54:08
Benutzerbild von juergen
juergen juergen ist offline
Junior Member
 
Registriert seit: Nov 2004
Ort: Schmitten
Alter: 65
Beiträge: 318
AW: Absendebutton disablen

Hallo Andes,

zunächst mal wird ist der Sendebutton noch einige Zeit aktiv zu sehen wenn man Ihn angeklickt hat. PHP muß die Übertragenden Felder (52 Felder) in eine Datenbank schreiben. Da gehen schon mal 10 - 20 Sekunden dahin. User die es nicht erwarten können klicken dann schon mal mehrmals auf den Button. Das will ich vermeiden. Im Grunde wäre mir schon geholfen wenn der Butten einfach verschwinden würde. hidden?

Leider bin ich nicht so gut in JS aber die Funktion soll den Text auf dem Button ändern und ihn dann disablen. Macht sie auch wenn man sie in die Funktion chkBewerten() einfach einbaut. siehe Code oben. Dann wird aber obwohl das Formular Fehler hat trotzdem abgesendet. Deshalb habe ich die
if (disbutton == true) { eingebaut um erst den Button zu deaktivieren wenn die Überprüfung disbutton = true; ergibt mit dem Resultat das jetzt nicht mehr disablet wird obwohl die Funktion true ergibt und das Formular auch abgesendet wird. Ich habe zur Kontrolle mal eine alertbox eingebaut. Die wird mir auch angezeigt.
Eventuell hast Du ja eine andere Idee! Wie gesagt es kann auch der Butten verschwinden.

Kann ich eigendlich im Submitbutten einen onclick einbauen? Ich glaube nicht oder? Leider kann ich es im Augenblick nicht probieren. Bin nicht zuhause.

Danke für Deine Hilfe.
HTML-Code:
if (disbutton == true) {

function Localize(pStr){return pStr;}

alert("Testtext");// wird aufgerufen aber die Funktion nicht

var ProcessingText = Localize("<?echo $_binbutton_text; ?>");
var cnt=0;
function doValidate(f){
f.BIN_button.value=ProcessingText;
f.BIN_button.disabled=true;
if (cnt==0)f.submit();
cnt++;
}
}
return disbutton;
}
__________________
--------------------------------
Gruß Jürgen

www.kenyasafaris.de
Mit Zitat antworten
  #8  
Alt 01.02.2007, 13:05:00
Raketenmann Raketenmann ist offline
Junior Member
 
Registriert seit: Jun 2004
Beiträge: 473
AW: Absendebutton disablen

Man kann in einen Button, der den 'type="button"' hat, ein 'onclick()' einbauen...

Deinen Button verschwinden lassen, kannst du auch über den 'style' 'display'.
Mit Zitat antworten
  #9  
Alt 01.02.2007, 14:01:29
Andes Andes ist offline
Member
 
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
AW: Absendebutton disablen

Du kannst auf jedes HTML-Element den Event onclick anwenden.

Ich hab deine Funktion mal etwas umgeschrieben und sie Funktioniert.

Code:
function chkBewerten() {

	var disbutton = true;	
	var elm = document.getElementById("headline");
	var ProcessingText = "warten"; //Hier musst du halt noch dein PHP einsetzen.
	var but = document.kontakt.BIN_button;
	// Headline
	if (elm.value == "") {
		alert("Hinweistext");
		with(elm.style) {
			backgroundColor = '#ff0000';		
			color = '#fff';
			fontWeight = "bold";
		}
		elm.focus();
		
		disbutton = false;
	}
	
	// Submit Button deaktivieren

	if (disbutton == true) {

		but.value = ProcessingText;
		but.disabled = true;
	}
	alert(but.value); //Test ob Text und Status geändert wurde
	return disbutton;
}
Versteh zwar nicht wieso das Formular noch so lange angezeigt wird. PHP arbeitet ja erst nach dem Senden und ist entweder eine andere Seite aufgerufen oder dieselbe ist leer bis PHP fertig ist.
__________________
Grüße Andes
Mit Zitat antworten
  #10  
Alt 01.02.2007, 17:33:27
Benutzerbild von juergen
juergen juergen ist offline
Junior Member
 
Registriert seit: Nov 2004
Ort: Schmitten
Alter: 65
Beiträge: 318
AW: Absendebutton disablen

Hallo Andes,

das ist die Lösung. Vielen Dank
Funktioniert super wie ich es wollte.
Nochmals vielen Dank.
__________________
--------------------------------
Gruß Jürgen

www.kenyasafaris.de
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
textfield bei bestimmter auswahl disablen... Pele007 PHP Grundlagen 5 28.10.2006 16:40:08
textfeld disablen via checkbox ingo HTML, CSS und JavaScript Help! 11 24.02.2005 16:23:19
PHP Credits disablen Matt Off Topic Area 3 21.04.2003 22:21:07


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:58:04 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt