php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS Probleme mit HTML5, Bootstrap oder jQuery ?

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 03-06-2009, 14:32
pinguin0814
 Registrierter Benutzer
Links : Onlinestatus : pinguin0814 ist offline
Registriert seit: Feb 2009
Beiträge: 11
pinguin0814 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Focus auf Textfeld setzen

Hallo,

habe ein Problem mit focus() setzen auf ein Textfeld, wenn die Datei nicht komplett neu geladen wird, sondern die Werte über Ajax übergeben werden.

hier werden die Daten eingeschrieben:

HTML-Code:
<input type="text" name="laenge" size="25" id="eingabe" value="" onkeyup="check(laenge);">
ein Javascript ruft die Ajax Funktion auf und die Funktion focussetzen():

HTML-Code:
function check(laenge)
{
	if (laenge.value.length==13)
{
	load();
	focussetzen();
}
}
in der function focussetzen soll der Focus wieder auf dasselbe input Feld gesetzt werden:

HTML-Code:
function focussetzen()
{
	document.getElementByID("eingabe").focus();
}
dies ist nun leider nicht der Fall.
Fällt irgendjemanden dazu etwas ein, wie das Textfeld immer wieder den Focus erhält, ohne das die Datei neu geladen wird???
Mit Zitat antworten
  #2 (permalink)  
Alt 03-06-2009, 14:41
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

nimm in der load() den aufruf vor:
PHP-Code:
function load()
{
  ..
  if (
ajax_obj.readyState == && ajax_obj.status == 200)
  {
    
focussetzen();
  }

ohne mehr code kann ich aber nur raten.

peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 03-06-2009, 15:10
pinguin0814
 Registrierter Benutzer
Links : Onlinestatus : pinguin0814 ist offline
Registriert seit: Feb 2009
Beiträge: 11
pinguin0814 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Kropff,

danke für die schnelle Antwort, leider blieb das gewünschte Ergebnis aus.

Ich füge dir mal meine Funktion load() dazu, vllt. erkennst Du den Fehler.
Deinen Code habe ich erstmal wieder rausgenommen, da es leider nicht die Lösung brachte.

HTML-Code:
function load()
{
  var eingabe=document.getElementById("eingabe").value;
  with (new Ajax()){
  
    url="./sn_scan.php";
    method="POST";
    params="eingabe="+eingabe;
    onSuccess=successHandler;
    onError=errorHandler;
    doRequest();
  }
   
//Den Text in die Seite einfuegen
function successHandler(txt,xml){
  document.getElementById("text").innerHTML=txt;
 
}

//Fehler
function errorHandler(msg){
  document.getElementById("text").innerHTML=msg;
}
}
ansonsten funktioniert alles, bloss der Focus wird nicht automatisch in das textfeld gesetzt. Bei Bedienung des Tabs springt er erst in das Feld.

Zur Erläuterung, die Daten werden per Barcodescanner eingelesen und weiterverarbeitet.
Dieses passiert schnell hintereinander, deswegen die Lösung per Ajax, um nicht jedesmal die komplette Datei neu zu laden.

Ich hoffe meine Erläuterung war einigermaßen verständlich.
Danke für im vorraus für deine Bemühungen.
Mit Zitat antworten
  #4 (permalink)  
Alt 03-06-2009, 15:47
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

wir beiden sind blind wie die nacht! nicht
PHP-Code:
document.getElementByID("eingabe").focus(); 
sondern
PHP-Code:
document.getElementById("eingabe").focus(); 
btw: firebug nutzen, dann findest du solche fehler sofort.

peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #5 (permalink)  
Alt 03-06-2009, 16:08
pinguin0814
 Registrierter Benutzer
Links : Onlinestatus : pinguin0814 ist offline
Registriert seit: Feb 2009
Beiträge: 11
pinguin0814 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok, das war mein Tippfehler. Hätte ich sehen müssen.

Aber leider ist das Problem damit nicht gelöst, es ist zum verzweifeln.

Vielleicht fällt jemanden noch ein Lösung dazu oder hatte selber schon einmal das Problem.
Mit Zitat antworten
  #6 (permalink)  
Alt 03-06-2009, 16:14
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

hast du ggf. ein online-beispiel verfügbar?

peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #7 (permalink)  
Alt 03-06-2009, 16:21
pinguin0814
 Registrierter Benutzer
Links : Onlinestatus : pinguin0814 ist offline
Registriert seit: Feb 2009
Beiträge: 11
pinguin0814 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

leider im moment nur lokal, aber geb mir ein paar minuten
Mit Zitat antworten
  #8 (permalink)  
Alt 03-06-2009, 16:54
pinguin0814
 Registrierter Benutzer
Links : Onlinestatus : pinguin0814 ist offline
Registriert seit: Feb 2009
Beiträge: 11
pinguin0814 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ist leider doch nicht so schnell möglich, sorry

Habe aber mal ein jpg angehangen.

Und zwar werden hier die S/N Nummern eingegeben. Beim ersten Aufruf ist der Focus in dem Textfeld. Da die Datei neu geladen wird.
Sind nun (siehe Funktion check(laenge)) 13 Zeichen eingegeben rufe die Funktion load() auf. Per Ajax wird die $eingabe übergeben und bearbeitet, funktioniert auch alles wunderbar.
Nun sollte der Focus aber wieder in dem Textfeld stehen, siehe Funktion focussetzen(), dies geschieht aber nicht.

Füge auch noch einmal die ajax.js ein:

HTML-Code:
function Ajax() {
  //Eigenschaften deklarieren und initialisieren
  this.url="";
  this.params="";
  this.method="GET";
  this.onSuccess=null;
  this.onError=function (msg) {
    alert(msg)
  }
}

Ajax.prototype.doRequest=function() {
  //Ueberpruefen der Angaben
  if (!this.url) {
    this.onError("Es wurde kein URL angegeben. Der Request wird abgebrochen.");
    return false;
  }

  if (!this.method) {
    this.method="GET";
  } else {
    this.method=this.method.toUpperCase();
  }

  //Zugriff auf Klasse für readyStateHandler ermoeglichen  
  var _this = this;
  
  //XMLHttpRequest-Objekt erstellen
  var xmlHttpRequest=getXMLHttpRequest();
  if (!xmlHttpRequest) {
    this.onError("Es konnte kein XMLHttpRequest-Objekt erstellt werden.");
    return false;
  }
  
  //Fallunterscheidung nach Uebertragungsmethode
  switch (this.method) {
    case "GET": xmlHttpRequest.open(this.method, this.url+"?"+this.params, true);
                xmlHttpRequest.onreadystatechange = readyStateHandler;
                xmlHttpRequest.send(null);
                break;
    case "POST": xmlHttpRequest.open(this.method, this.url, true);
                 xmlHttpRequest.onreadystatechange = readyStateHandler;
                 xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                 xmlHttpRequest.send(this.params);
                 break;
  }  

  //Private Methode zur Verarbeitung der erhaltenen Daten
  function readyStateHandler() {
    if (xmlHttpRequest.readyState < 4) {
      return false;
    }
    if (xmlHttpRequest.status == 200 || xmlHttpRequest.status==304) {
      if (_this.onSuccess) {
        _this.onSuccess(xmlHttpRequest.responseText, xmlHttpRequest.responseXML);
      }
    } else {
      if (_this.onError) {
        _this.onError("["+xmlHttpRequest.status+" "+xmlHttpRequest.statusText+"] Es trat ein Fehler bei der Datenbertragung auf.");
      }
    }
  }
}

//Gibt browserunabhaengig ein XMLHttpRequest-Objekt zurueck
function getXMLHttpRequest() 
{
  if (window.XMLHttpRequest) {
    //XMLHttpRequest fuer Firefox, Opera, Safari, ...
    return new XMLHttpRequest();
  } else 
  if (window.ActiveXObject) {
    try {   
      //XMLHTTP (neu) fuer Internet Explorer 
      return new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {        
        //XMLHTTP (alt) fuer Internet Explorer
        return new ActiveXObject("Microsoft.XMLHTTP");  
      } catch (e) {
        return null;
      }
    }
  }
  return false;
}
Miniaturansicht angehängter Grafiken
Focus auf Textfeld setzen-lieferschein.jpg  
Mit Zitat antworten
  #9 (permalink)  
Alt 03-06-2009, 17:01
Wyveres
 Registrierter Benutzer
Links : Onlinestatus : Wyveres ist offline
Registriert seit: Dec 2006
Ort: Rügen
Beiträge: 763
Blog-Einträge: 2
Wyveres ist zur Zeit noch ein unbeschriebenes Blatt
Wyveres eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von pinguin0814 Beitrag anzeigen
Hallo Kropff,

danke für die schnelle Antwort, leider blieb das gewünschte Ergebnis aus.

Ich füge dir mal meine Funktion load() dazu, vllt. erkennst Du den Fehler.
Deinen Code habe ich erstmal wieder rausgenommen, da es leider nicht die Lösung brachte.

HTML-Code:
function load()
{
  var eingabe=document.getElementById("eingabe").value;
  with (new Ajax()){
  
    url="./sn_scan.php";
    method="POST";
    params="eingabe="+eingabe;
    onSuccess=successHandler;
    onError=errorHandler;
    doRequest();
  }
   
//Den Text in die Seite einfuegen
function successHandler(txt,xml){
  document.getElementById("text").innerHTML=txt;
 
}

//Fehler
function errorHandler(msg){
  document.getElementById("text").innerHTML=msg;
}
}
ansonsten funktioniert alles, bloss der Focus wird nicht automatisch in das textfeld gesetzt. Bei Bedienung des Tabs springt er erst in das Feld.

Zur Erläuterung, die Daten werden per Barcodescanner eingelesen und weiterverarbeitet.
Dieses passiert schnell hintereinander, deswegen die Lösung per Ajax, um nicht jedesmal die komplette Datei neu zu laden.

Ich hoffe meine Erläuterung war einigermaßen verständlich.
Danke für im vorraus für deine Bemühungen.
Den Focus in die Success Function setzten ... das verhalten is normal da er den focus auf das Textfeld setzt bevor die Success function durch ist.

Sowas kannste ganz einfach herrausfinden ;D setz einfach mal text außerhalb des Ajax aufrufes in die load function ins textfeld ;D

oder nach dem aufruf der load function in der check function.
__________________
Bitte Beachten.
Foren-Regeln
Danke
Mit Zitat antworten
  #10 (permalink)  
Alt 03-06-2009, 17:19
pinguin0814
 Registrierter Benutzer
Links : Onlinestatus : pinguin0814 ist offline
Registriert seit: Feb 2009
Beiträge: 11
pinguin0814 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Wyveres, die Idee hatte ich auch schon, hat mich aber auch nicht weitergebracht.
Mit Zitat antworten
  #11 (permalink)  
Alt 03-06-2009, 17:56
Wyveres
 Registrierter Benutzer
Links : Onlinestatus : Wyveres ist offline
Registriert seit: Dec 2006
Ort: Rügen
Beiträge: 763
Blog-Einträge: 2
Wyveres ist zur Zeit noch ein unbeschriebenes Blatt
Wyveres eine Nachricht über ICQ schicken
Standard

Was mir gerade an der Load function auffällt ;D die schleifen ...
HTML-Code:
function load()
{
  var eingabe=document.getElementById("eingabe").value;
  with (new Ajax())
  {
  
    url="./sn_scan.php";
    method="POST";
    params="eingabe="+eingabe;
    onSuccess=successHandler;
    onError=errorHandler;
    doRequest();
  }
<--- hier fehlt doch was?   
//Den Text in die Seite einfuegen
function successHandler(txt,xml)
{
  document.getElementById("text").innerHTML=txt;
 
}

//Fehler
function errorHandler(msg)
{
  document.getElementById("text").innerHTML=msg;
}
}<--- die hier vielleicht?
is der Code im orginal auch so?

und normalerweise müsste es eigentlich gehen ... da ich es eigentlich immer so mache ... wenn ich den focus innerhalb einer ajax function nach dem abarbeiten der ajax function zurück auf ein bestimmtes feld setzen will, tue ich das innerhalb des onComplete oder onSuccess Block. Weil er den Focus erst dann wieder auf das Feld setzt wenn die Ajax function durch ist.
das würde bei dir heißen.
HTML-Code:
//Den Text in die Seite einfuegen
function successHandler(txt,xml)
{
  document.getElementById("text").innerHTML=txt;
  document.getElementById("eingabe").focus(); 
}
__________________
Bitte Beachten.
Foren-Regeln
Danke
Mit Zitat antworten
  #12 (permalink)  
Alt 04-06-2009, 16:04
pinguin0814
 Registrierter Benutzer
Links : Onlinestatus : pinguin0814 ist offline
Registriert seit: Feb 2009
Beiträge: 11
pinguin0814 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,

so habe soeben zum ansehen die Datei aufgespielt.

Link

Bitte im IE ansehen, das es nur darauf optimiert bzw. gebraucht wird.

Die Datei sn_scan.php habe ich auf das wesentliche reduziert.

Nach der Eingabe von 13 Zeichen wird die Funktion load() aufgerufen. Danach sollte der Focus wieder im Textfeld stehen. Bin für jede Hilfe dankbar.

Hier noch einmal die sn_scan1.php

HTML-Code:
<?php
session_start();
?>
<body onLoad="window.document.getElementById('eingabe').focus();">
<script type="text/javascript" src="ajax1.js"></script>
<script type="text/javascript" src="suggest1.js"></script>
<script language="javascript">
function check(laenge)
{
if (laenge.value.length==13)
{
	load();
}
}
</script>
<?php
if(isset($_POST["eingabe"]))
{
	$eingabe=$_POST["eingabe"];
}
if(isset($_GET["eingabe"]))
{
	$eingabe=$_GET["eingabe"];
}
//if (!get_magic_quotes_gpc())
//$eingabe = addslashes($eingabe);
$ausgabe.= '<div>'.
'<input type="text" id="eingabe" name="laenge" size="25" value="" onkeyup="check(laenge)">'.
'</div>';
print '<div id="text">';
print $ausgabe.'</div>';
?>
sowie die Funktion load() die in der suggest1.php aufgerufen wird:

HTML-Code:
function load()
{
  var eingabe=document.getElementById("eingabe").value;
  with (new Ajax()){
  
    url="./sn_scan1.php";
    method="POST";
    params="eingabe="+eingabe;
    onSuccess=successHandler;
    onError=errorHandler;
    doRequest();
    }
}
//Den Text in die Seite einfuegen
function successHandler(txt,xml){
  document.getElementById("text").innerHTML=txt;
	document.getElementById("eingabe").focus();
}
//Fehler
function errorHandler(msg){
	document.getElementById("text").innerHTML=msg;
}
Gruß und Danke
Mit Zitat antworten
  #13 (permalink)  
Alt 04-06-2009, 17:12
Wyveres
 Registrierter Benutzer
Links : Onlinestatus : Wyveres ist offline
Registriert seit: Dec 2006
Ort: Rügen
Beiträge: 763
Blog-Einträge: 2
Wyveres ist zur Zeit noch ein unbeschriebenes Blatt
Wyveres eine Nachricht über ICQ schicken
Standard

onkeyup="check(laenge)"

firefox firebug ... laenge is nicht definiert ... wie währe es mit this? ... an der stelle ? da du ja in der function auf laenge.value.length zugreifst ... währe das schonmal sinvoller.
__________________
Bitte Beachten.
Foren-Regeln
Danke
Mit Zitat antworten
  #14 (permalink)  
Alt 04-06-2009, 18:09
pinguin0814
 Registrierter Benutzer
Links : Onlinestatus : pinguin0814 ist offline
Registriert seit: Feb 2009
Beiträge: 11
pinguin0814 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Wyveres danke, ja, das ist korrekt, läuft nun auch im Firefox, aber leider nicht im IE welcher für mich vordergründig ist.
Mit Zitat antworten
  #15 (permalink)  
Alt 05-06-2009, 09:09
Wyveres
 Registrierter Benutzer
Links : Onlinestatus : Wyveres ist offline
Registriert seit: Dec 2006
Ort: Rügen
Beiträge: 763
Blog-Einträge: 2
Wyveres ist zur Zeit noch ein unbeschriebenes Blatt
Wyveres eine Nachricht über ICQ schicken
Standard

Läuft nicht im IE heist was? ...
__________________
Bitte Beachten.
Foren-Regeln
Danke
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
wert von textfeld an dyn. textfeld übergeben? Davidaff Archiv / Trash 6 05-02-2008 20:23
Focus auf Eingabefeld setzen balou3 HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 4 23-09-2004 15:04
focus im input-file nach hinten setzen hell HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 3 03-07-2003 17:31
js: Cursor in Textfeld setzen Troublegum HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 10 26-03-2002 21:49
Help!! Focus auf Formularelement setzen Nexxus21 HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 2 22-10-2001 19:16

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:00 Uhr.