Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zasięg JS i reagowanie na pola formularza
scanner
post 27.10.2004, 17:22:43
Post #1





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Witajcie.

Zakładając, ze mam strone opartą na <frameset>, mam pytanie odnoście "zasięgu" JS.
Czy jeżeli w pliku definiującym tenże frameset będzie napisana pewna funckja JS, to czy będzie ona widoczna w każdej ramce? Czy (bardziej prawdopodobne) każda ramka musi mieć własną kopię tej funkcji?

Oraz druga sprawa:
Potrzebuję funkcję JS, która będzie wywoływana przy każdej zmianie dowolnego pola tekstowego w dowolnej ramce sprawdzała czy to co zostało wpisane pasuje do wzorca.

Pomożecie?


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Paul
post 27.10.2004, 17:47:49
Post #2





Grupa: Zarejestrowani
Postów: 636
Pomógł: 0
Dołączył: 22.10.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


1. Bedzie widoczna. Trzeba sie odwolac wtedy do funkcji przez obiekt parent lub top.

2. Napisalem cos takiego... Funkcja nadaje wszystkim polom tekstowym zdarzenie onchange ktore wywoluje funkcje sprawdzajaca ze wzorcem. Jesli dobrze zrozumialem to mniej wiecej oto chodzilo.

Kod
<script type="text/javascript">
var reg_exp;
function sprawdz(tmp) {
   reg_exp = tmp;
   ramki = window.frames;
  
   for(i = 0; i < ramki.length; i++) {
      formularze =  ramki[ i ].document.forms;  
      
      for(i2 = 0; i2 < formularze.length; i2++) {
         elementy = formularze[ i2 ].elements;
        
         for(i3 = 0; i3 < elementy.length; i3++) {
        
            if(elementy[ i3 ].type == 'text') {
               elementy[ i3 ].onchange = wzorzec;
            }
         }
      }
   }
}

function wzorzec(e) {  
   if(e) {
       obj = e.target;
   } else {
      var obj;
      for(i = 0; !obj; i++) {
         obj = window.frames[ i ].event.srcElement;
      }
   }
    if( !obj.value.match(reg_exp) ) {
       alert('Nie pasuje do wzorca: ' + reg_exp);
    }
}

</script>
<frameset cols="50%,*">
<frame src="ramka1.htm" name="ramka1">
<frame src="ramka2.htm" name="ramka2">
</frameset>


ramka1.htm
Kod
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
</head>
<body>
Tylko małe i duże litery od A do Z.<br><br>
<form style="margin-top:0;">
<input type="text" id="input1_1"><br><br>
<input type="text" id="input1_2"><br><br>
<input type="text" id="input1_3"><br><br>
</form>
</body>
</html>


ramka2.htm
Kod
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
</head>
<body onload="top.sprawdz( /^[a-z]*$/i );"><br><br>
<form style="margin-top:0;">
<input type="text" id="input2_1"><br><br>
<input type="text" id="input2_2"><br><br>
<input type="text" id="input2_3"><br><br>
</form>
</body>
</html>


PS. [ CODE ] dlatego, zeby zachowac formatowanie.

Ten post edytował Paul 28.10.2004, 16:33:53
Go to the top of the page
+Quote Post
scanner
post 4.11.2004, 21:28:18
Post #3





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Pytanie dodatkowe:
Jak wykryć naciśnięcie klawisza w aktywnym oknie przeglądarki i zapisać do zmiennej?


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
revyag
post 5.11.2004, 08:02:35
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

Ostrzeżenie: (0%)
-----


Coś takiego na przykład:
Kod
<script type"text/javascript">
function key_detect(){
    var key=window.event;
    code=key.keyCode;
    var key_code=String.fromCharCode(code);
    alert("The key is:" + key_code);
}
</script>

  1. <body onkeypress="key_detect()">

poda Ci jaki klawisz był wciśnięty np. jak naciśniesz a to wyświetli się w alercie a. Nie reaguje to na klawisze funkcyjne.
Ewentualnie można to przeobić żeby podawało kod klawisza.


--------------------
-------------

------
Go to the top of the page
+Quote Post
Paul
post 5.11.2004, 14:10:20
Post #5





Grupa: Zarejestrowani
Postów: 636
Pomógł: 0
Dołączył: 22.10.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


revyag: Twoje rozwiazanie dziala tylko w IE i Operze. Pozatym da sie wykrywac klawisze funkcyjne tyle, ze przy zdarzeniu onkeydown, wtedy jedak przejmuja one kody malych liter. Na przyklad 1 na czesci numerycznej (przy wlaczonym num locku) to juz nie 1 ale a smile.gif
Kod
<html>
<head>
<script type="text/javascript">
function przechwyc(e) {
    if(document.all) {
       e = window.event.keyCode;
    } else {
       e = e.which;
    }
    alert(e);
}
document.onkeydown = przechwyc;
</script>
</head>
<body>
</body>
</html>
Go to the top of the page
+Quote Post
koskitos
post 4.02.2007, 17:04:40
Post #6





Grupa: Zarejestrowani
Postów: 149
Pomógł: 0
Dołączył: 18.04.2004
Skąd: Z nikąd

Ostrzeżenie: (30%)
XX---


Dzięki za pomoc.
Poszukałem i to stworzyłem: smile.gif
  1. <script language="JavaScript" type="text/javascript">
  2. function przechwyc(e) {
  3. if(document.all) {
  4. e = window.event.keyCode;
  5. } else {
  6. e = e.which;
  7. }
  8.  
  9. if(e == 13) {
  10. document.myform.submit();
  11. }
  12. }
  13.  
  14. document.onkeydown = przechwyc;
  15.  
  16. <form name="myform" action="handle-data.php">
  17. <textarea onkeyup="return przechwyc(e)" id="texta"></textarea>
  18. <input type="submit" />
  19. </form>

Działa jak natura chciała! biggrin.gif


--------------------
kOskiToS :D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 00:51