Hallo,
ich möchte in der CustomerTicketMessage.dtl das freie textfeld nr 1 ansprechen und damit eine Validierung der eingebenen Daten durchführen (so wie es mit Subject und Body schon geschieht).
Eigentlich sollte doch eine Überprüfung ob überhaupt etwas eingeben wurde so gehen:
function submit_compose()
{
if (document.compose.Subject.value == "") {
alert('$JSText{"A message should have a subject!"}');
document.compose.Subject.focus();
return false;
}
else if (document.compose.Body.value == "") {
alert('$JSText{"A message should have a body!"}');
document.compose.Body.focus();
return false;
}
else if (TicketFreeText1.value == "") {
alert('$JSText{"A message should have a body!"}');
document.compose.Body.focus();
return false;
}
else {
return true;
}
}
funktioniert aber nicht für TicketFreeText1
Wie muss ich das Feld denn ansprechen?
Valiedierung in CustomerTicketMessage.dtl
Ungetestet, aber hiermit sollte es klappen:
Code: Select all
-else if (TicketFreeText1.value == "") {
+else if (document.compose.TicketFreeText1.value == "") {
alert('$JSText{"Schreib was in mich rein!"}');
- document.compose.Body.focus();
+ document.compose.TicketFreeText1.focus();
return false;
}
Produktiv-System: Ubuntu 8.04.4 LTS, OTRS 2.4.7, Apache 2.2.8, mod_perl 2.0.3, MySQL 5.0.51
Test-System: Ubuntu 8.04.4 LTS, OTRS 2.4.7, Apache 2.2.8, mod_perl 2.0.3, MySQL 5.0.51
Test-System: Ubuntu 8.04.4 LTS, OTRS 2.4.7, Apache 2.2.8, mod_perl 2.0.3, MySQL 5.0.51
Bitte nochmals um Hilfe bei Validierung
Hallo, ich möchte nun die Eingabe des FreeText -Feldes gegen einen Datenbankeintrag validieren: Folgender Code
# --
# CustomerMessageNew.dtl - provides HTML form for customer message
# Copyright (C) 2001-2006 OTRS GmbH, http://otrs.org/
# --
# $Id: CustomerTicketMessage.dtl,v 1.5 2006/10/12 10:16:00 martin Exp $
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see http://www.gnu.org/licenses/gpl.txt.
# --
<!-- start form -->
<script language="JavaScript" type="text/javascript">
<!--
function findserial($seriennr)
{ <?php
$db = mysql_connect("localhost", "user", "password");
$sqlab = "select seriennr, ipadress, hostname, betreutbis form plus700";
$sqlab .= " where seriennr like '$seriennr' ";
$res = mysql_db_query("otrsPlus700", $sqlab);
$num = mysql_num_rows($res);
echo "$num"
if ($num==0) return False;
for ($i=0; $i<$num; $i++)
{
$sn = mysql_result($res, $i, "seriennr");
echo "$sn"
document.compose.TicketFreeText1.value = $sn;
}
mysql_close($db);
return True;
?>
}
function submit_compose()
{
if (document.compose.Subject.value == "") {
alert('$JSText{"A message should have a subject!"}');
document.compose.Subject.focus();
return false;
}
else if (document.compose.Body.value == "") {
alert('$JSText{"A message should have a body!"}');
document.compose.Body.focus();
return false;
}
else if (document.compose.TicketFreeText1.value == "") {
alert('$JSText{"Seriennummer bitte ausfüllen"}');
document.compose.TicketFreeText1.focus();
return false;
}
else {
if findserial(document.compose.TicketFreeText1.value)
return true;
echo "True"
else
echo "False"
return false;
}
}
leider ist hier ein Fehler drin. Egal ob die Seriennummer existiert oder nicht der Datensatz wird immer geschrieben d.h. submit_compose erhält immer true. Wo liegt der Fehler?

# --
# CustomerMessageNew.dtl - provides HTML form for customer message
# Copyright (C) 2001-2006 OTRS GmbH, http://otrs.org/
# --
# $Id: CustomerTicketMessage.dtl,v 1.5 2006/10/12 10:16:00 martin Exp $
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see http://www.gnu.org/licenses/gpl.txt.
# --
<!-- start form -->
<script language="JavaScript" type="text/javascript">
<!--
function findserial($seriennr)
{ <?php
$db = mysql_connect("localhost", "user", "password");
$sqlab = "select seriennr, ipadress, hostname, betreutbis form plus700";
$sqlab .= " where seriennr like '$seriennr' ";
$res = mysql_db_query("otrsPlus700", $sqlab);
$num = mysql_num_rows($res);
echo "$num"
if ($num==0) return False;
for ($i=0; $i<$num; $i++)
{
$sn = mysql_result($res, $i, "seriennr");
echo "$sn"
document.compose.TicketFreeText1.value = $sn;
}
mysql_close($db);
return True;
?>
}
function submit_compose()
{
if (document.compose.Subject.value == "") {
alert('$JSText{"A message should have a subject!"}');
document.compose.Subject.focus();
return false;
}
else if (document.compose.Body.value == "") {
alert('$JSText{"A message should have a body!"}');
document.compose.Body.focus();
return false;
}
else if (document.compose.TicketFreeText1.value == "") {
alert('$JSText{"Seriennummer bitte ausfüllen"}');
document.compose.TicketFreeText1.focus();
return false;
}
else {
if findserial(document.compose.TicketFreeText1.value)
return true;
echo "True"
else
echo "False"
return false;
}
}
leider ist hier ein Fehler drin. Egal ob die Seriennummer existiert oder nicht der Datensatz wird immer geschrieben d.h. submit_compose erhält immer true. Wo liegt der Fehler?


Dein letzter Abschnitt ist etwas daneben.... Von den Klammern her meine ich.
Probier's mal so:
Die "echo"-Ausgaben bringen dir in der Reihenfolge ohnehin nichts, da ja anschließend sofort ein neuer Seitenaufbau erfolgt...
Probier's mal so:
Code: Select all
else {
if findserial(document.compose.TicketFreeText1.value)
return true;
else
return false;
}
... und führe mich nicht in Versuchung, sondern suche mich in der Unterführung ...
------
Produktiv: OTRS 2.1.4 auf Fedora Core 5, MySQL 5 / Apache 2 (mod_fastcgi)
Test: OTRS 2.1.x CVS auf Fedora Core 5, MySQL 5 / Apache 2 (mod_fastcgi)
------
Produktiv: OTRS 2.1.4 auf Fedora Core 5, MySQL 5 / Apache 2 (mod_fastcgi)
Test: OTRS 2.1.x CVS auf Fedora Core 5, MySQL 5 / Apache 2 (mod_fastcgi)
Validierung FreeTextFeld funktioniert auch so nicht
funktioniert auch so nicht:
<!-- start form -->
<script language="JavaScript" type="text/javascript">
<!--
function findserial($seriennr)
{ <?php
$db = mysql_connect("localhost", "user", "password");
$sqlab = "select seriennr, ipadress, hostname, betreutbis form plus700";
$sqlab .= " where seriennr like '$seriennr' ";
$res = mysql_db_query("otrsPlus700", $sqlab);
$num = mysql_num_rows($res);
echo "$num"
if ($num==0) return False;
for ($i=0; $i<$num; $i++)
{
$sn = mysql_result($res, $i, "seriennr");
echo "$sn"
document.compose.TicketFreeText1.value = $sn;
}
mysql_close($db);
return True;
?>
}
function submit_compose()
{
if (document.compose.Subject.value == "") {
alert('$JSText{"A message should have a subject!"}');
document.compose.Subject.focus();
return false;
}
else if (document.compose.Body.value == "") {
alert('$JSText{"A message should have a body!"}');
document.compose.Body.focus();
return false;
}
else if (document.compose.TicketFreeText1.value == "") {
alert('$JSText{"Seriennummer bitte ausfüllen"}');
document.compose.TicketFreeText1.focus();
return false;
}
else {
if findserial(document.compose.TicketFreeText1.value)
return true;
else
return false;
}
}
liegt aber wohl daran dass die CustomerTicket.dtl ja eigentlich eine HTML-Datei wird und so die php-Anweisungen gar nicht als solche interpretiert werden.
Mein Aufgabenstellung ist eigentlich ganz einfach. Die Eingabe in das TicketFeeText1-Feld soll nur übernommen werden wenn die eingebene seriennummer in einer datenbank existiert (seriennumer ist ein eindeutiger datensatz , die sql-suchanweisung liefert also immer höchtens einen Datensatz zurück (wenn datensatz vorhanden) oder eben keinen)
Kann es sein dass ich die CustomerTicket.pm anspassen muss?
<!-- start form -->
<script language="JavaScript" type="text/javascript">
<!--
function findserial($seriennr)
{ <?php
$db = mysql_connect("localhost", "user", "password");
$sqlab = "select seriennr, ipadress, hostname, betreutbis form plus700";
$sqlab .= " where seriennr like '$seriennr' ";
$res = mysql_db_query("otrsPlus700", $sqlab);
$num = mysql_num_rows($res);
echo "$num"
if ($num==0) return False;
for ($i=0; $i<$num; $i++)
{
$sn = mysql_result($res, $i, "seriennr");
echo "$sn"
document.compose.TicketFreeText1.value = $sn;
}
mysql_close($db);
return True;
?>
}
function submit_compose()
{
if (document.compose.Subject.value == "") {
alert('$JSText{"A message should have a subject!"}');
document.compose.Subject.focus();
return false;
}
else if (document.compose.Body.value == "") {
alert('$JSText{"A message should have a body!"}');
document.compose.Body.focus();
return false;
}
else if (document.compose.TicketFreeText1.value == "") {
alert('$JSText{"Seriennummer bitte ausfüllen"}');
document.compose.TicketFreeText1.focus();
return false;
}
else {
if findserial(document.compose.TicketFreeText1.value)
return true;
else
return false;
}
}
liegt aber wohl daran dass die CustomerTicket.dtl ja eigentlich eine HTML-Datei wird und so die php-Anweisungen gar nicht als solche interpretiert werden.
Mein Aufgabenstellung ist eigentlich ganz einfach. Die Eingabe in das TicketFeeText1-Feld soll nur übernommen werden wenn die eingebene seriennummer in einer datenbank existiert (seriennumer ist ein eindeutiger datensatz , die sql-suchanweisung liefert also immer höchtens einen Datensatz zurück (wenn datensatz vorhanden) oder eben keinen)
Kann es sein dass ich die CustomerTicket.pm anspassen muss?
Eingabevalidierung mit AJAX
Hallo,
nachdem ich mich jetzt etwas mit den möglichkeiten der Eingabevalidierung beschäftigt habe bin ich auf die AJAX-Technik gestossen. Hierfür gibt es auch schon einige Frameworks. Ein weit verbreitetes und stabiles scheint sajax zu sein welches auch gleich Perl-Unterstützung mitbringt. Hat jemand schon damit gearbeitet um z.Bsp eine Eingabevalidierung eines Freitextfeldes durchzuführen?
Wäre nett wenn jemand ein Beispiel hätte in Perl.
OTRS 2.1.4 for win32 | Windows Server 2003 R2 Standard Edition ServicePack1 | PHP Version 5.2.0
nachdem ich mich jetzt etwas mit den möglichkeiten der Eingabevalidierung beschäftigt habe bin ich auf die AJAX-Technik gestossen. Hierfür gibt es auch schon einige Frameworks. Ein weit verbreitetes und stabiles scheint sajax zu sein welches auch gleich Perl-Unterstützung mitbringt. Hat jemand schon damit gearbeitet um z.Bsp eine Eingabevalidierung eines Freitextfeldes durchzuführen?
Wäre nett wenn jemand ein Beispiel hätte in Perl.
OTRS 2.1.4 for win32 | Windows Server 2003 R2 Standard Edition ServicePack1 | PHP Version 5.2.0