Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Walidacja formularza - mały skrypcik problem
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
jagon
Witajcie. Sprawa wygląda tak...ściągnąłem z pewnej strony skrypt walidacji formularza, następnie przerobiłem go wg swojego uznania. Wszystko jest PRAWIE dobrze. A dlaczego prawie?

Po wciśnięciu przycisku (button) skrypt działa właściwie, natomiast gdy button zamienię na submit, po wciśnięciu nic się nie dzieje.

Próbowałem ruszyć akcję za pomocą <a href>, jednak również nie działa właściwie.

Funkcja ma za zadanie sprawdzić, czy wpisana wartość zawiera daną frazę a także czy nie zawiera zabronionych fraz.

Czy mogę liczyć na pomoc?

Jeśli ktoś był by w stanie poprawić mój kod, byłbym bardzo wdzięczny. Prosze o wyrozumiałość, gdyż w JS bawię sie dopiero kilka dni:)

Kod
<script type="text/javascript" language="javascript">
function validate(){

var inputs = (document.getElementsByTagName('input').length)-1;

var fields = new Array;

for (var i = 0; i < inputs; i++)
{
id = "input[" + i +"]";
fields[i] = document.getElementById(id).value;
}

//Create Variable to Keep Track of Errors
var err = 0;


//Start Validation Loop
for (i=0;i<fields.length;i++){

var x=fields[i];


//////////////////////////////////////////////////////
//Frazy dozwolone                                    //
var accpos = new Array;                                //
accpos[0] = x.indexOf("embed");                        //
                                                    //
//Frazy niedozwolone                                //
var notpos = new Array;                                //
notpos[0] = x.indexOf("file");                        //
notpos[1] = x.indexOf("iframe");                    //
//////////////////////////////////////////////////////


//Check Fields in Array to Make Sure they are not Empty
if (fields[i] == "" || accpos[0] < 0 || notpos[0] >= 0 || notpos[1] >= 0){

id = "showme[" + i +"]";

document.getElementById(id).style.display="block";
        
err++;
}

}//Close Loop
//Check That There are No Errors
if (err === 0){
//Submit Form
document.myform.submit();
}else {
//If there are errors, return false and alert the user
return false;
}
}
</script>



Kod
<form method='post' name='myform' action=''>


<?php

for($x = 0; $x < 3; $x++)
{
echo"
array: <input type='text' id='input[$x]' name='input[$x]'/><br />
<div id='showme[$x]' style='color: red; display: none;'>Wprowadzony link jest nieprawidłowy.</div>
";
}

echo $_POST['input'][0];

?>


<input type='button' value='Log Me In' onClick='validate();'/>

</form>
AdIoS_Neo
Witam,
poprawiłem i zoptymalizowałem trochę Twój skrypt (teraz działa nawet w IE6 wink.gif )

[JAVASCRIPT] pobierz, plaintext
  1. function validate(e){
  2. if(!e) e = window.event;
  3. var inputs = document.getElementById("myform").getElementsByTagName("input");
  4. var fields = [];
  5. for (var i = 0; i < inputs.length-1; i++){
  6. fields.push(inputs[i].value);
  7. }
  8. var err = 0;
  9. for (i=0;i<fields.length;i++){
  10. if (fields[i] == "" || !/embed/i.test(fields[i]) || /file|iframe/i.test(fields[i])){
  11. document.getElementById("showme[" + i +"]").style.display="block";
  12. err++;
  13. }
  14. }
  15. if(err > 0){
  16. if(e.preventDefault) e.preventDefault();
  17. else e.returnValue = false;
  18. return false;
  19. }
  20. document.myform.submit();
  21. }
  22. try{
  23. window.addEventListener("load", function(){
  24. document.getElementById("myform").addEventListener("submit", validate, true);
  25. });
  26. }catch(error){
  27. try{
  28. window.attachEvent("onload", function(){
  29. document.getElementById("myform").attachEvent("onsubmit", validate);
  30. });
  31. }catch(error){}
  32. }
[JAVASCRIPT] pobierz, plaintext


  1. <form method='post' name='myform' id="myform" action=''>
  2. <?php
  3. for($x=0;$x < 3;$x++){
  4. echo"array: <input type='text' id='input[$x]' name='input[$x]'/><br />
  5. <div id='showme[$x]' style='color: red; display: none;'>Wprowadzony link jest nieprawidłowy.</div>
  6. ";
  7. }
  8. if(isset($_POST['input']))
  9. echo $_POST['input'][0];
  10. ?>
  11. <input type='submit' value='Log Me In'/>
  12. </form>
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.