próbuję zrobić walidację pól formularza z danymi podczas procesu zamówienia, jednak występuje problem- walidacja po prostu nie działa, choć teoretycznie powinna.
Przed formularzem został wstawiony skrypt;
Kod
<script type="text/javascript" LANGUAGE="JavaScript">
function przetwarzaj_dane ()
{
var brakuje_danych=false;
var formularz=document.forms[0];
var napis="";
if (formularz.company.value == ""){
napis += "imie\n"
brakuje_danych=true;
}
if (formularz.address_2_field.value == ""){
napis += "nazwisko\n"
brakuje_danych=true;
}
if (formularz.extra_field_1.value == ""){
napis += "kraj\n"
brakuje_danych=true;
}
if (formularz.extra_field_2.value == ""){
napis += "telefon\n"
brakuje_danych=true;
}
if (!brakuje_danych)
formularz.submit();
else{
alert ("Nie wypełniłe¶ następuj±cych pól:\n" + napis);
}
</script>
function przetwarzaj_dane ()
{
var brakuje_danych=false;
var formularz=document.forms[0];
var napis="";
if (formularz.company.value == ""){
napis += "imie\n"
brakuje_danych=true;
}
if (formularz.address_2_field.value == ""){
napis += "nazwisko\n"
brakuje_danych=true;
}
if (formularz.extra_field_1.value == ""){
napis += "kraj\n"
brakuje_danych=true;
}
if (formularz.extra_field_2.value == ""){
napis += "telefon\n"
brakuje_danych=true;
}
if (!brakuje_danych)
formularz.submit();
else{
alert ("Nie wypełniłe¶ następuj±cych pól:\n" + napis);
}
</script>
po czym mamy pierwszą linijkę dość rozbudowanego formularza i jego pola
Kod
<form action="<?php echo SECUREURL ?>index.php" method="post" name="adminForm" >
....
<br/><br/><div id="city_div" style="float:left;width:40%;text-align:right;vertical-align:bottom;font-weight: bold;font-size: 10px;padding-right: 5px;"><label for="city_field"><?php echo $VM_LANG->_PHPSHOP_USER_FORM_CITY; ?></label></div>
<div style="float:left;width:50%;">
<input type="text" id="city_field" name="extra_field_1" size="30" class="inputbox" value="<?php echo $db->f('extra_field_1');?>"/>
</div>
<br/><br/><div id="postc_div" style="float:left;width:40%;text-align:right;vertical-align:bottom;font-weight: bold;font-size: 10px;padding-right: 5px;"><label for="postc_field"><?php echo $VM_LANG->_PHPSHOP_USER_FORM_ZIP; ?></label></div>
<div style="float:left;width:50%;">
<input type="text" id="postc_field" name="extra_field_2" size="30" class="inputbox" value="<?php echo $db->f('extra_field_2');?>"/>
</div>
...
....
<br/><br/><div id="city_div" style="float:left;width:40%;text-align:right;vertical-align:bottom;font-weight: bold;font-size: 10px;padding-right: 5px;"><label for="city_field"><?php echo $VM_LANG->_PHPSHOP_USER_FORM_CITY; ?></label></div>
<div style="float:left;width:50%;">
<input type="text" id="city_field" name="extra_field_1" size="30" class="inputbox" value="<?php echo $db->f('extra_field_1');?>"/>
</div>
<br/><br/><div id="postc_div" style="float:left;width:40%;text-align:right;vertical-align:bottom;font-weight: bold;font-size: 10px;padding-right: 5px;"><label for="postc_field"><?php echo $VM_LANG->_PHPSHOP_USER_FORM_ZIP; ?></label></div>
<div style="float:left;width:50%;">
<input type="text" id="postc_field" name="extra_field_2" size="30" class="inputbox" value="<?php echo $db->f('extra_field_2');?>"/>
</div>
...
Na końcu submit- z przekierowaniem do strony płatności. W jednym z submitów(nie wiem czemu są dwa) dodany został 'onclick'
Kod
<?php
if( @VM_ONCHECKOUT_SHOW_LEGALINFO == '1' ) {
$link = sefRelToAbs('index2.php?option=com_content&task=view&id='.VM_ONCHECKOUT_LEGALINFO_LINK );
$jslink = "window.open('$link', 'win2', 'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,wid
h=640,height=480,directories=no,location=no'); return false;";
if( @VM_ONCHECKOUT_LEGALINFO_SHORTTEXT=='' || !defined('VM_ONCHECKOUT_LEGALINFO_SHORTTEXT')) {
$text = $VM_LANG->_VM_LEGALINFO_SHORTTEXT;
} else {
$text = VM_ONCHECKOUT_LEGALINFO_SHORTTEXT;
}
?>
<div class="legalinfo"><?php
echo sprintf( $text, $link, $jslink );
?>
</div><br />
<?php
}
?>
<div align="center">
<input type="submit" onclick="return( submit_order( this.form ) );" class="basket_input_buttons" name="submit" value="<?php echo $VM_LANG->_PHPSHOP_ORDER_CONFIRM_MNU ?>" />
</div>
<?php
}
elseif ($checkout_this_step != CHECK_OUT_GET_FINAL_CONFIRMATION) { ?>
<div align="center">
<input type="submit" onClick="przetwarzaj_dane()" class="button" name="submit" value="<?php echo $VM_LANG->_PHPSHOP_CHECKOUT_NEXT;?> >>" />
</div>
<?php
} ?>
</td>
</tr>
</table>
</form>
if( @VM_ONCHECKOUT_SHOW_LEGALINFO == '1' ) {
$link = sefRelToAbs('index2.php?option=com_content&task=view&id='.VM_ONCHECKOUT_LEGALINFO_LINK );
$jslink = "window.open('$link', 'win2', 'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,wid
h=640,height=480,directories=no,location=no'); return false;";
if( @VM_ONCHECKOUT_LEGALINFO_SHORTTEXT=='' || !defined('VM_ONCHECKOUT_LEGALINFO_SHORTTEXT')) {
$text = $VM_LANG->_VM_LEGALINFO_SHORTTEXT;
} else {
$text = VM_ONCHECKOUT_LEGALINFO_SHORTTEXT;
}
?>
<div class="legalinfo"><?php
echo sprintf( $text, $link, $jslink );
?>
</div><br />
<?php
}
?>
<div align="center">
<input type="submit" onclick="return( submit_order( this.form ) );" class="basket_input_buttons" name="submit" value="<?php echo $VM_LANG->_PHPSHOP_ORDER_CONFIRM_MNU ?>" />
</div>
<?php
}
elseif ($checkout_this_step != CHECK_OUT_GET_FINAL_CONFIRMATION) { ?>
<div align="center">
<input type="submit" onClick="przetwarzaj_dane()" class="button" name="submit" value="<?php echo $VM_LANG->_PHPSHOP_CHECKOUT_NEXT;?> >>" />
</div>
<?php
} ?>
</td>
</tr>
</table>
</form>
Dodam, że niestety nie znam się na PHP ani Javie- wszystko jest analizowane na zasadzie logiki i podstaw języka C.
Będę wdzięczny za jakieś wskazówki i pomoc- być może przyczyną jest tutaj przekierowanie na stronę płatności- wtedy onclick jest zignorowany...