Ergebnis 1 bis 5 von 5
  1. #1
    MaltöserMalte ist offline Grünschnabel
    registriert
    15-07-2007
    Beiträge
    4

    Post Mit Button Funktion erstellen

    Hallo Leute

    Ich benötige dringend Hilfe zu einem Javascript. Dieses wird über einen Button aufgerufen (addDay) und soll dadurch ein neues Input-Textfeld und einen neuen Button erstellen, über welchen man eine andere Funktion aufrufen kann (displayCalendar).
    Klingt Kompliziert? Hier was praktisch gemacht werden soll: Über einen Button können Terminfelder erstellen werden (addDay). Neben jedem Terminfeld soll ein neuer Button erstellt werden, der einen Minikalender öffnet (displayCalendar), über welchen man einen Tag auswählen kann, der dann im Textfeld gespeichert wird.

    Code:
    function addDay( table )
    {
    
    var temp = DayCount;
    DayCount = temp+1;
    var row = table.insertRow( DayCount );
    cell = row.insertCell( 0 );
    var caltag = 'exptag' + DayCount;
    var input = document.createElement( 'INPUT' );
    input.type = 'text';
    input.name = caltag;
    input.size = '45';
    cell.appendChild( input );
    var cell = row.insertCell ( 1 );
    var input = document.createElement( 'INPUT' );
    input.type = 'button';
    input.value = 'Datum auswählen';
    input.onclick = function() { displayCalendar(document.forms["Content"].elements[caltag],'dd.mm.yyyy',this ); };
    cell.appendChild( input );
    
    }

    Erstellen tut er alles brav, aber wenn ich dann den Kalenderbutton anklicke tut sich nichts. Mit anderen Felder im Formular, die nicht über Javascript erstellt wurden sondern "normal" funktioniert es. Kann die displayCalendar-Funktion keine Felder bearbeiten, die über JavaScript erstellt wurden? Wenn ja, warum? Ich sehe eigentlich keinen großen Unterschied zu "normal" erstellten Feldern.

    Alles Gute & Danke fürs Lesen
    Malte

  2. #2
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Mit Button Funktion erstellen

    Wenn du vom sprichst, dann ja. Allerdings dürfte das nicht dein Problem sein, da die onclick Funktion trotzdem aufgerufen wird. Gibt es Fehlermeldungen?

  3. #3
    MaltöserMalte ist offline Grünschnabel
    registriert
    15-07-2007
    Beiträge
    4

    AW: Mit Button Funktion erstellen

    Ja, der IE wirft folgendes aus:

    Zeile: 1306
    Zeichen: 2
    Fehler: 'value' ist Null oder kein Objekt
    Code: 0
    Hmm.. scheint also irgendein Fehler im Aufrufen der displayCalendar-Funktion zu sein. Wie gesagt: Wenn ich ein Input Feld nehme, dass nicht durch JS erstellt wurde, funktioniert es. Also muss es nach meinem Verständnis doch eigentlich daran liegen, dass es ein durch JS erstelltes Feld ist - nur verstehe ich nicht wo für diese Funktion der Unterschied zwischen einem bereits erstellten und einem durch JS erstellten Feld ist.
    For those who care: Hier ist die displayCalendar-Funktion. Die habe ich allerdings nicht selbst geschrieben, sondern ist Opensource (der Form halber: es ist von DTHMLGoodies.com):

    Code:
    function displayCalendar(inputField,format,buttonObj,displayTime,timeInput)
    {
    	if(displayTime)calendarDisplayTime=true; else calendarDisplayTime = false;
    	if(inputField.value.length>0){
    		
    		if(!format.match(/^[0-9]*?$/gi)){
    			var items = inputField.value.split(/[^0-9]/gi);
    			var positionArray = new Array();
    			positionArray['m'] = format.indexOf('mm');
    			if(positionArray['m']==-1)positionArray['m'] = format.indexOf('m');
    			positionArray['d'] = format.indexOf('dd');
    			if(positionArray['d']==-1)positionArray['d'] = format.indexOf('d');
    			positionArray['y'] = format.indexOf('yyyy');
    			positionArray['h'] = format.indexOf('hh');
    			positionArray['i'] = format.indexOf('ii');
    			
    			var positionArrayNumeric = Array();
    			positionArrayNumeric[0] = positionArray['m'];
    			positionArrayNumeric[1] = positionArray['d'];
    			positionArrayNumeric[2] = positionArray['y'];
    			positionArrayNumeric[3] = positionArray['h'];
    			positionArrayNumeric[4] = positionArray['i'];
    			
    			
    			positionArrayNumeric = positionArrayNumeric.sort(calendarSortItems);
    			var itemIndex = -1;
    			currentHour = '00';
    			currentMinute = '00';
    			for(var no=0;no<positionArrayNumeric.length;no++){
    				if(positionArrayNumeric[no]==-1)continue;
    				itemIndex++;
    				if(positionArrayNumeric[no]==positionArray['m']){
    					currentMonth = items[itemIndex]-1;
    					continue;
    				}
    				if(positionArrayNumeric[no]==positionArray['y']){
    					currentYear = items[itemIndex];
    					continue;
    				}	
    				if(positionArrayNumeric[no]==positionArray['d']){
    					tmpDay = items[itemIndex];
    					continue;
    				}	
    				if(positionArrayNumeric[no]==positionArray['h']){
    					currentHour = items[itemIndex];
    					continue;
    				}	
    				if(positionArrayNumeric[no]==positionArray['i']){
    					currentMinute = items[itemIndex];
    					continue;
    				}	
    			}
    
    			currentMonth = currentMonth / 1;
    			tmpDay = tmpDay / 1;
    		}else{		
    			var monthPos = format.indexOf('mm');
    			currentMonth = inputField.value.substr(monthPos,2)/1 -1;	
    			var yearPos = format.indexOf('yyyy');
    			currentYear = inputField.value.substr(yearPos,4);		
    			var dayPos = format.indexOf('dd');
    			tmpDay = inputField.value.substr(dayPos,2);		
    			
    			var hourPos = format.indexOf('hh');
    			if(hourPos>=0){
    				tmpHour = inputField.value.substr(hourPos,2);	
    				currentHour = tmpHour;
    			}else{
    				currentHour = '00';
    			}
    			var minutePos = format.indexOf('ii');
    			if(minutePos>=0){
    				tmpMinute = inputField.value.substr(minutePos,2);	
    				currentMinute = tmpMinute;
    			}else{
    				currentMinute = '00';
    			}	
    		}
    	}else{
    		var d = new Date();
    		currentMonth = d.getMonth();
    		currentYear = d.getFullYear();
    		currentHour = '08';
    		currentMinute = '00';
    		tmpDay = d.getDate();
    	}
    	
    	inputYear = currentYear;
    	inputMonth = currentMonth;
    	inputDay = tmpDay/1;
    	
    	
    	if(!calendarDiv){
    		initCalendar();			
    	}else{
    		if(calendarDiv.style.display=='block'){
    			closeCalendar();
    			return false;
    		}
    		writeCalendarContent();
    	}	
    	
    	
    			
    	returnFormat = format;
    	returnDateTo = inputField;
    	positionCalendar(buttonObj);
    	calendarDiv.style.visibility = 'visible';	
    	calendarDiv.style.display = 'block';	
    	if(iframeObj){
    		iframeObj.style.display = '';
    		iframeObj.style.height = '140px';
    		iframeObj.style.width = '195px';
    				iframeObj2.style.display = '';
    		iframeObj2.style.height = '140px';
    		iframeObj2.style.width = '195px';
    	}
    	
    	setTimeProperties();	
    	updateYearDiv();
    	updateMonthDiv();
    	updateMinuteDiv();
    	updateHourDiv();
    	
    }
    Alles Gute
    Malte

  4. #4
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Mit Button Funktion erstellen

    Naja, die Funktion erwartet eine Referentz auf das Element, die hast du ja bereits.

    PHP-Code:
    input.onclick = function() { displayCalendar(this,'dd.mm.yyyy',this ); }; 

  5. #5
    MaltöserMalte ist offline Grünschnabel
    registriert
    15-07-2007
    Beiträge
    4

    AW: Mit Button Funktion erstellen

    Hm. Ich bin in JS ziemlich unbewandert, ich werde daher nicht so richtig schlau aus deinem letzten Beitrag :-)
    Also wenn ich

    PHP-Code:
    input.onclick = function() { displayCalendar(this,'dd.mm.yyyy',this ); }; 
    statt

    PHP-Code:
    input.onclick = function() { displayCalendar(document.forms["Content"].elements[caltag],'dd.mm.yyyy',this ); }; 
    schreibe, erscheinen nicht einmal mehr Textfeld und Button - es passiert gar nichts.. Es erscheint aber ein anderer Error im IE:

    Zeile: 157
    Zeichen: 1
    Fehler: Objekt erwartet
    Code: 0
    Ich vermute der betreffende Fehler taucht irgendwo an dieser Stelle des Codes auf:
    PHP-Code:
    var iframeObj false;
    //// fix for EI frame problem on time dropdowns 09/30/2006
    var iframeObj2 =false;
    function 
    EIS_FIX_EI1(where2fixit)


            if(!
    iframeObj2)return;
            
    iframeObj2.style.display 'block';
            
    iframeObj2.style.height =document.getElementById(where2fixit).offsetHeight+1;
            
    iframeObj2.style.width=document.getElementById(where2fixit).offsetWidth;
            
    iframeObj2.style.left=getleftPos(document.getElementById(where2fixit))+1-calendar_offsetLeft;
            
    iframeObj2.style.top=getTopPos(document.getElementById(where2fixit))-document.getElementById(where2fixit).offsetHeight-calendar_offsetTop;
    }

    function 
    EIS_Hide_Frame()
    {        if(
    iframeObj2)iframeObj2.style.display 'none';}
    //// fix for EI frame problem on time dropdowns 09/30/2006
    var returnDateToYear;
    var 
    returnDateToMonth;
    var 
    returnDateToDay;
    var 
    returnDateToHour;
    var 
    returnDateToMinute;

    var 
    inputYear;
    var 
    inputMonth;
    var 
    inputDay;
    var 
    inputHour;
    var 
    inputMinute;
    var 
    calendarDisplayTime false;

    var 
    selectBoxHighlightColor '#D60808'// Highlight color of select boxes
    var selectBoxRolloverBgColor '#E2EBED'// Background color on drop down lists(rollover)

    var selectBoxMovementInProgress false;
    var 
    activeSelectBox false;

    function 
    cancelCalendarEvent()
    {
        return 
    false;

    Alles Gute
    Malte

Ähnliche Themen

  1. 3 Button Menü erstellen
    Von Kastalonien im Forum JavaScript
    Antworten: 0
    Letzter Beitrag: 01-06-2006, 15:20
  2. submit button erstellen bei onChange
    Von prufer im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 12-05-2006, 11:58
  3. Button erstellen
    Von change im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 30-11-2005, 11:58
  4. Antworten: 1
    Letzter Beitrag: 25-01-2005, 21:13
  5. Button mit wechselnder Funktion !
    Von visual im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 06-05-2004, 11:00

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •