Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
20 de miliarde de euro ingropati ...

Costuri PUZ

Varsta Biologica vs Varsta Fizica

Disjunctor maxilar - lipsa aparit...
 Mutare sediu PFA

Recomandare clinica/medic pentru ...

Imbatranire prematura

"Am facut locuri de parcare&#...
 Ranjetul la oameni

recomandare AC 2 dormitoare mici

Ce femeie are si zahar si miere

Vas wc care nu inchide
 De ce este greu pentru microintre...

Intrebari despre carucior electric

Tester pH-ul apei

Achizitionarea unui subwoofer auto
 

verificare focus in textarea

- - - - -
  • Please log in to reply
11 replies to this topic

#1
Talkabout

Talkabout

    Senior Member

  • Grup: Senior Members
  • Posts: 5,695
  • Înscris: 20.09.2006
Salut,
cum as putea afisa intr-un alert, la apasarea unui buton de tip button, "true" daca un textarea are focusul pe el, si "false" in caz contrar?
am incercat prin nenumarate metode dar nu am reusit..
de exemplu

function checkFocuss(){
if (var1){
  alert("DA focus");
}
else{
alert("NU focus");
}
}
...
<textarea id="mytextarea" name="mytextarea" rows="10" cols="90" onfocus="var1=true;" onblur="var1=false;">
<input type="button" name="trimite" value="d" id="d" onclick="checkFocuss();">

Merci

#2
senoctar

senoctar

    Member

  • Grup: Members
  • Posts: 733
  • Înscris: 01.07.2006
Cand apesi pe buton focusul va fi transferat pe el oricum.
Nu este o metoda cross-browser pentru asa ceva. Va trebui sa monitorizezi "manual" focusul, cu onblur. Daca ultimul eveniment de acest tip inainte de apasarea butonului a venit de la textarea, atunci focusul era pe el inainte.

#3
Talkabout

Talkabout

    Senior Member

  • Grup: Senior Members
  • Posts: 5,695
  • Înscris: 20.09.2006
nu prea am inteles ideea, dar poate cu un exemplu "chior" in sensu asta m-as lamuri.. :)

ideea e urmatoarea:
in body am un onkeypress, care imi scrie intr-un textarea, ceea ce tastez, chiar daca focusul nu e pe el. eu vreau ca acea functie JS (din onkeypress) sa se apeleze doar daca nu e focusul pe textarea (deci nu e cursorul acolo, pentru ca atunci e clar ca "scriu de la tastatura", si imi scrie de 2 ori.. din ce tastez eu + functia JS). vreau sa apelez functia aia JS doar daca sunt in afara text area..

#4
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
In body? Nimeni nu mai scrie cod js direct in HTML, in schimb ataseaza "event listeners" nodurilor.
Ma rog, sper ca nimeni serios din domeniu.

Un punct de inceput (presupunand ca nu ai mai lucrat cu jquery):

	 1  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
	 2  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	 3		  <head>
	 4				  <title>Title</title>
	 5				  <script type="text/javascript" src="jquery.js"></script>
	 6				  <script type="text/javascript">
	 7						  $(document).ready(function(){
	 8								  $("#mybutton").click(function(ev){
	 9										  $("#notification").text(ev.target.id + " clicked");
	10								  });
	11								  $("#mytextarea").blur(function(ev){
	12										  console.log(ev);//firebug console
	13										  $("#notification").text("blurred");
	14								  });
	15						  });
	16				  </script>
	17		  </head>
	18		  <body>
	19				  <p id="notification">some data</p>
	20				  <textarea id="mytextarea"></textarea>
	21				  <p>something else</p>
	22				  <input type="submit" id="mybutton" />
	23		  </body>
	24  </html>
Asta e doar un exemplu ca sa ai un puct de pornire.
Iti mai raman cateva lucruri de facut (sau chiar de sters):

1. adauga un handler pentru evenimentul click pe document (sau body, daca chiar vrei), in care setezi o variabila globala lastClicked cu id-ul ultimului element apasat (Event.originalTarget)
2. atunci cand este apasat mybutton, verifica daca lastClicked este mytextarea, daca da, atunci a avut loc evenimentul pe care-l cauti, altfel nu.

PS: vezi ca la 1. ai cazul special in care nodul clicked este chiar mybutton.

Edited by OriginalCopy, 16 October 2009 - 23:58.


#5
Talkabout

Talkabout

    Senior Member

  • Grup: Senior Members
  • Posts: 5,695
  • Înscris: 20.09.2006
buna idee, insa m-am mai gandit daca n-ar fi mai simplu sa aflu daca intr-un textarea exista un cursor.. se poate determina lucrul asta cumva? daca nu e un cursor undeva, clar ca nu e nici focusul pe textarea..

#6
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostTalkabout, on 16th October 2009, 23:40, said:

buna idee, insa m-am mai gandit daca n-ar fi mai simplu sa aflu daca intr-un textarea exista un cursor.. se poate determina lucrul asta cumva? daca nu e un cursor undeva, clar ca nu e nici focusul pe textarea..

Stai si rumega ce ti-a zis senoctar:

View Postsenoctar, on 16th October 2009, 20:39, said:

Cand apesi pe buton focusul va fi transferat pe el oricum.
Acum intreaba-te: ce se intampla cand dau click pe un alt nod decat cel actual?

Cat despre logica ta, este total gresita: focusul poate sa fie undeva, si anume pe un alt input, deci ai un cursor, si totusi textarea-ul care te intereseaza nu are cursorul. Deci nu:

Quote

daca nu e un cursor undeva, clar ca nu e nici focusul pe textarea..
Edit: (chiar daca ar fi posibil sa afli unde e cursorul direct, fara sa iterezi tot DOM-ul. TOT DOM-ul! Pfui, cata munca :))

Edited by OriginalCopy, 16 October 2009 - 23:50.


#7
Talkabout

Talkabout

    Senior Member

  • Grup: Senior Members
  • Posts: 5,695
  • Înscris: 20.09.2006
pe formularul meu am doar un textarea si niste butoane. daca sunt in interiorul textarea si tastez, n-as vrea sa se apeleze functia din <body onkeypress="functia();">
cand dau click in afara textarea, oriunde, e clar ca vreau sa se apeleze

p.s. daca am onkeypress si la body si la textarea, prioritate are cel de la body nu? adica se va executa intotdeauna cand tastez ceva..

#8
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostTalkabout, on 16th October 2009, 23:49, said:

cand dau click in afara textarea, oriunde, e clar ca vreau sa se apeleze
Asta nu e ce ai spus tu initial! E cu totul altceva fata de

Quote

cum as putea afisa intr-un alert, la apasarea unui buton de tip button, "true" daca un textarea are focusul pe el, si "false" in caz contrar?
[ http://www.processdevelopers.com/images/PM_Build_Swing.gif - Pentru incarcare in pagina (embed) Click aici ]
:lol:
Ti-am dat solutia la asta. Intelege codul meu si gata. :)

Edited by OriginalCopy, 16 October 2009 - 23:57.


#9
Talkabout

Talkabout

    Senior Member

  • Grup: Senior Members
  • Posts: 5,695
  • Înscris: 20.09.2006
ma rog, initial am vrut sa fac doar de test, faza cu butonul. dar ce vreau de fapt e ca daca sunt oriunde in afara textarea, functia tre sa se apeleze, altfel nu. n-am inteles analogia cu imaginile alea .. :)

#10
Talkabout

Talkabout

    Senior Member

  • Grup: Senior Members
  • Posts: 5,695
  • Înscris: 20.09.2006
Apropo, daca intr-un onfocus (de la textarea de exemplu) declar o variabila ca fiind false, variabila aia e vazuta in functiile JS din <head> ?

#11
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
1. Nu mai pune cod js in atributele elementelor din HTML, ci ataseaza event handlers. Ti-am aratat cum cu jquery (si oricum e mai bine sa folosesti un framework ca sa fii sigur ca scrii un cod si ruleaza cum trebuie pe toate browserele, dincolo de faptul ca-ti usureaza munca)
2. Depinde cum declari variabila. Daca o declari locala, ea exista doar in blocul respectiv, daca o declari globala, ea e atribut al obiectului window.
Locala:
var foo = 'bar';
Globala:
foo = 'bar';
Terminologie relevanta (pentru google, ce altceva?): variable scope.

#12
Talkabout

Talkabout

    Senior Member

  • Grup: Senior Members
  • Posts: 5,695
  • Înscris: 20.09.2006
multam, problema rezolvata :)

Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate