Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zasięg JS i reagowanie na pola formularza
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
scanner
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?
Paul
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.
scanner
Pytanie dodatkowe:
Jak wykryć naciśnięcie klawisza w aktywnym oknie przeglądarki i zapisać do zmiennej?
revyag
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.
Paul
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>
koskitos
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.