ugrás a tartalomhoz

input value nem megy Firefoxban.

Anonymous · 2006. Szep. 17. (V), 14.39
Egy automatikus kiegészítőt készítek, ami kilistázza a kereső mezőbe beírt stringgel kezdődő neveket. Ott van a gond, hogy a listában egy adott névre kattintva azt szeretném, hogy az a név kerüljön bele a kereső mezőbe. IE alatt működik, de FF alatt nem kerül bele ez az érték a szövegdobozba. Fogalmam sincs miért, lehet, hogy egy orbitális elnézés az egész.

a kód:

var nevkereso = Class.create();
   nevkereso.prototype = {
      initialize: function(input_id, button_id, eredmeny_div, div_class){
         this.input = $(input_id);          
         this.eredmeny_div = $(eredmeny_div);
         this.div_class = div_class;    
         this.button = $(button_id);     
         Event.observe(this.input, 'keyup', this.nevet_keres.bind(this), false);        
      },
      
      nevet_keres: function(){ 
          if(this.input.value == '') this.button.setAttribute('disabled', true);
          var input_val = this.input.value;         
          var pars = 'text=' + base64enc(escape(input_val));
          var url = 'http://localhost/laser/neveket_keres.php?';          
      		var myAjax = new Ajax.Updater(
			      this.eredmeny_div, 
			      url, 
			      {
				      method: 'post', 
				      parameters: pars,
				      onFailure: this.reportError.bind(this),
				      onComplete: this.registerHandlers.bind(this),
				      onLoading: this.show_load.bind(this)
			      });                                  
      },
      
      reportError: function(){
         alert('A szerver oldalon hiba történt.');
      },
      
      registerHandlers: function(){   
         var divs = document.getElementsByClassName(this.div_class);             
         divs.each(
            function(elem, index){
               Event.observe(elem, 'mouseover', this.over.bindAsEventListener(this), false); 
               Event.observe(elem, 'mouseout', this.out.bindAsEventListener(this), false);
               Event.observe(elem, 'click', this.click.bindAsEventListener(this), false);
            }.bind(this)
         )         
      },
      
      show_load: function(){
      },
      
      over:function(e){
         var source = Event.element(e);
         source.className = 'lookup_nev_over';
         Event.stop(e);
      },
      
      out: function(e){
         var source = Event.element(e);
         source.className = 'lookup_nev';
         Event.stop(e);
      },
      
      click: function(e){
         var source = Event.element(e);                                                
         this.input.value = source.firstChild.nodeValue;        
         this.button.setAttribute('disabled', false);
         Event.stop(e);                                               
      }            
}
A 'click' tagfüggvény this.input.value = source.firstChild.nodeValue; sorát nem veszi a FF. Mi lehet a gond?

A segítséget előre is köszönöm.

Laci
 
1

senki sem futott még ilyenbe?

Anonymous · 2006. Szep. 18. (H), 14.15
annyit még hozzátennék, hogy az alert(source.firstChild.nodeValue) rendesen kiadja az input mezőbe írandó nevet, az input mezőbe is bekerül valami láthatatlan, mert a kurzor odébb ugrik. Mindez FF alatt, IE-ben rendesen működik.
Mi lehet ez?
2

azt így ránézésre

toxin · 2006. Szep. 18. (H), 14.59
meg nem mondom, de

fx/FireBug/debuggerében teszel oda egy töréspontot és megnézed
http://encytemedia.com/blog/articles/2006/05/12/an-in-depth-look-at-the-future-of-javascript-debugging-with-firebug

;) (alert helyett meg console.log :) )

üdv t

ui: http://wiki.script.aculo.us/scriptaculous/show/Ajax.Autocompleter kukk meg
3

megvan!

Anonymous · 2006. Szep. 18. (H), 17.26
Köszönöm a segítséget, egy kis debugolás után rögtön napvilágra került a turpisság.
A szerver által visszaküldött HTML smartyval készült, így benne maradt az összes sortörés és szóköz, persze, hogy a szövegmező nem ette a dolgot, mivel valami ilyesmi értéket kapott:

" \n \n érték"

Okulásul, ha valaki ilyenbe belefutna:

ilyen volt:

a {$nevsor[num].name} érték menne a szövegmezőbe

{section name=num loop=$nevsor}  
<div id="lookup_nevsor_{$nevsor[num].id}" class="lookup_nev">
   {$nevsor[num].name}
</div>
{/section}
és így, egy sorba összehúzva már működik is:

{section name=num loop=$nevsor}                             
   <div id="lookup_nevsor_{$nevsor[num].id}" class="lookup_nev">{$nevsor[num].name}</div>
{/section}  
4

szivesen ^^,

toxin · 2006. Szep. 18. (H), 17.50
aztán el ne feljtsd megnézni Joe Hewitt videóját a FireBugról,

http://weblabor.hu/blogmarkok/14876

és imádkozni hozzá esténként jó javascript fejlesztő módjára :))))

üdv t