Avatar billede tjensen Nybegynder
18. maj 2006 - 14:19 Der er 1 kommentar og
1 løsning

Tilføj checkboxs test

Jeg har følgende js validering:

function javascript_validation() {
    $js = '';
      if (is_array($this->modules)) {
        $js = '<script language="javascript"><!-- ' . "\n" .
          'function check_form() {' . "\n" .
        '  var error = 0;' . "\n" .
        '  var error_message = "' . JS_ERROR . '";' . "\n" .
        '  var payment_value = null;' . "\n" .
        '  if (document.checkout_payment.payment.length) {' . "\n" .
        '    for (var i=0; i<document.checkout_payment.payment.length; i++) {' . "\n" .
        '      if (document.checkout_payment.payment[i].checked) {' . "\n" .
        '        payment_value = document.checkout_payment.payment[i].value;' . "\n" .
        '      }' . "\n" .
        '    }' . "\n" .
        '  } else if (document.checkout_payment.payment.checked) {' . "\n" .
        '    payment_value = document.checkout_payment.payment.value;' . "\n" .
        '  } else if (document.checkout_payment.payment.value) {' . "\n" .
        '    payment_value = document.checkout_payment.payment.value;' . "\n" .
        '  }' . "\n\n";

            reset($this->modules);
      while (list(, $value) = each($this->modules)) {
          $class = substr($value, 0, strrpos($value, '.'));
        if ($GLOBALS[$class]->enabled) {
            $js .= $GLOBALS[$class]->javascript_validation();
        }
      }

      $js .= "\n" . '  if (payment_value == null) {' . "\n" .
          '    error_message = error_message + "' . JS_ERROR_NO_PAYMENT_MODULE_SELECTED . '";' . "\n" .
        '    error = 1;' . "\n" .
        '  }' . "\n\n" .
        '  if (error == 1) {' . "\n" .
        '    alert(error_message);' . "\n" .
        '    return false;' . "\n" .
        '  } else {' . "\n" .
        '    return true;' . "\n" .
        '  }' . "\n" .
        '}' . "\n" .
        '//--></script>' . "\n";
        }
    return $js;
}

Nu vil jeg gerne tilføje en test om en checkbox er checked.
Hvilket jeg har valgt at gøre således:

function javascript_validation() {
    $js = '';
      if (is_array($this->modules)) {
        $js = '<script language="javascript"><!-- ' . "\n" .
      'function check_form() {' . "\n" .
      '  var error = 0;' . "\n" .
      '  var error_message = "' . JS_ERROR . '";' . "\n" .
      '  var payment_value = null;' . "\n" .
      '  if (document.checkout_payment.payment.length) {' . "\n" .
      '    for (var i=0; i<document.checkout_payment.payment.length; i++) {' . "\n" .
      '      if (document.checkout_payment.payment[i].checked) {' . "\n" .
      '        payment_value = document.checkout_payment.payment[i].value;' . "\n" .
      '      }' . "\n" .
      '    }' . "\n" .
      '  } else if (document.checkout_payment.payment.checked) {' . "\n" .
      '    payment_value = document.checkout_payment.payment.value;' . "\n" .
      '  } else if (document.checkout_payment.payment.value) {' . "\n" .
      '    payment_value = document.checkout_payment.payment.value;' . "\n" .
      '  }' . "\n";

            reset($this->modules);
        while (list(, $value) = each($this->modules)) {
          $class = substr($value, 0, strrpos($value, '.'));
        if ($GLOBALS[$class]->enabled) {
            $js .= $GLOBALS[$class]->javascript_validation();
                }
      }

      $js .= "\n" . '  function check_checkbox(field_name, field_must, message) {' . "\n" .
            '    if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) {' . "\n" .
      '          var field_value = form.elements[field_name].checked;' . "\n" .
      '          error_message = error_message + "* " + field_value + "\n";' . "\n" .
            '          if (field_value != field_must) {' . "\n" .
      '          error_message = error_message + "* " + message + "\n";' . "\n" .
        '            error = true;' . "\n" .
      '        }' . "\n" .
      '      }' . "\n" .
      '  }' . "\n" .
      "\n" . '  check_checkbox("conditions", true, "' . JS_ERROR_CONDITIONS_NOT_ACCEPTED . '" )' . "\n" .
      "\n" . '  if (payment_value == null) {' . "\n" .
      '    error_message = error_message + "' . JS_ERROR_NO_PAYMENT_MODULE_SELECTED . '";' . "\n" .
      '    error = 1;' . "\n" .
      '  }' . "\n\n" .
      '  if (error == 1) {' . "\n" .
      '    alert(error_message);' . "\n" .
      '    return false;' . "\n" .
      '  } else {' . "\n" .
      '    return true;' . "\n" .
      '  }' . "\n" .
      '}' . "\n" .
      '//--></script>' . "\n";
      }
    return $js;
}


Men nu kommer det funker ikke helt. Noget helt galt med mit js?

Hilsen Thomas
Avatar billede tjensen Nybegynder
18. maj 2006 - 15:06 #1
Har grænset mit problem lidt ind. Og fået rette dummerten så alle min error hedder error = true og også det jeg tester på nu.

Satte function'en check_checkbox uden for den anden function.

Men det virker stadig ikk, lige indtil jeg fjerner
check_checkbox("conditions", true, "' . JS_ERROR_CONDITIONS_NOT_ACCEPTED . '");'

Så virker resten, men hvad er der galt med
function check_checkbox(field_name, field_must, message) {
    if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) {
        var field_value = form.elements[field_name].checked;
      error_message = error_message + "* " + field_value + "\n";
  if (field_value != field_must) {
          error_message = error_message + "* " + message + "\n";
            error = true;
        }
    }
}
Avatar billede tjensen Nybegynder
18. maj 2006 - 16:01 #2
Glem det!
Inkluderede i testen, istedet for at få oprettet den funktion.

til intreserret, endte med at se således ud:

    function javascript_validation() {
      $js = '';
      if (is_array($this->modules)) {
        $js = '<script language="javascript"><!-- ' . "\n" .
                            'function check_form() {' . "\n" .
              '  var error = false;' . "\n" .
              '  var error_message = "' . JS_ERROR . '";' . "\n" .
              '  var payment_value = null;' . "\n" .
              '  if (document.checkout_payment.payment.length) {' . "\n" .
              '    for (var i=0; i<document.checkout_payment.payment.length; i++) {' . "\n" .
              '      if (document.checkout_payment.payment[i].checked) {' . "\n" .
              '        payment_value = document.checkout_payment.payment[i].value;' . "\n" .
              '      }' . "\n" .
              '    }' . "\n" .
              '  } else if (document.checkout_payment.payment.checked) {' . "\n" .
              '    payment_value = document.checkout_payment.payment.value;' . "\n" .
              '  } else if (document.checkout_payment.payment.value) {' . "\n" .
              '    payment_value = document.checkout_payment.payment.value;' . "\n" .
              '  }' . "\n";

        reset($this->modules);
        while (list(, $value) = each($this->modules)) {
          $class = substr($value, 0, strrpos($value, '.'));
          if ($GLOBALS[$class]->enabled) {
            $js .= $GLOBALS[$class]->javascript_validation();
          }
        }

        $js .= "\n" . '  if (payment_value == null) {' . "\n" .
              '    error_message = error_message + "' . JS_ERROR_NO_PAYMENT_MODULE_SELECTED . '";' . "\n" .
              '    error = true;' . "\n" .
              '  }' . "\n\n" .
                            '    if (document.checkout_payment.conditions.checked == false) {' . "\n" .
              '  error_message = error_message + "' . JS_ERROR_CONDITIONS_NOT_ACCEPTED . '";' . "\n" .
                            '        error = true;' . "\n" .
                            '    }' . "\n\n" .
                            '  if (error == true) {' . "\n" .
              '    alert(error_message);' . "\n" .
              '    return false;' . "\n" .
              '  } else {' . "\n" .
              '    return true;' . "\n" .
              '  }' . "\n" .
              '}' . "\n" .
              '//--></script>' . "\n";
      }

      return $js;
    }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester