Validieren von Daten in Javascript mit ungewöhnlicher Form Field Ids - Salesforce.com Web-To-Fall-Integration

StackOverflow https://stackoverflow.com/questions/977330

Frage

Ok, ich brauche Hilfe. Dies ist meine erste Frage hier.

Hintergrund: Ich arbeite an einem Charity-Projekt, und mein Teil des Projektes ist es, die Web-To-Fall-Funktionalität mit Salesforce.com zu bauen. Salesforce.com, wenn Sie nicht bewusst waren, gibt die Software entfernt auf qualifizierte Nicht-Gewinne. Wie auch immer, die Web-To-Fall-Funktion in Salesforce.com generiert ein HTML-Formular, das, wenn vorgelegt, die Daten zurück zu Salesforce.com senden und ein Ticket erstellen. Die IDs für die Formularelemente sind Strings von Zahlen und Buchstaben, die entsprechen die Felder in Salesforce.com erscheinen würde.

Ziel: Ich habe versucht, in die Validierung der Daten auf einer bestimmten Form zu bauen, weil wir herausgefunden, dass es sei denn, die Daten nur so formatiert wurden (12/30/2009 12.00), alles, was der Benutzer eingegeben würde es nicht machen in Salesforce.com

Problem: Gefunden ein Skript online (JavaScript) und modifiziert es meine Bedürfnisse anzupassen. Problem - es funktioniert nicht. Ich bekomme einen wenig Fehler in der Ecke des Browsers, aber es hört nicht auf die Form von durchlaufen (es auch nicht bestätigen.) - „Erwartet‚)‘“ on line 16

Ich würde gerne den Code hier anhängen ... Ich hoffe, das ist in Ordnung. Normalerweise würde ich nur die relevanten Bits ausgeschnitten, aber ich fürchte, dass die Leute dann würden sagen: „Hey, das wird nie funktionieren - Sie haben keinen abschließenden HTML-Tag“ oder Dingsbums. Ich bin mir nicht sicher, ob es gut wird ein - es kam aus einer HTM-Datei und die HTML kann von diesem Forum interpretiert werden und das wäre ... na ja ... nicht ideal! Okay, ich glaube, ich herausgefunden, wie es zu entkommen, aber es gab so viel zu entkommen, dass ich die meisten der Kommentare ausgeschnitten und die meisten der wirklich irrelevant Dinge ..

Sie können sehen, wie die Formularfeld-IDs sind alle flippig - die meisten Beispiele sah ich einfach Form Ids und Namen hatte ... so fragte ich mich, wenn Javascript kann einfach nicht mit Strings, beginnend mit Ziffern als id / Namen befassen auf Felder aus.

Ich frage mich auch - weil ich es nicht durch Tests überprüfen kann, da es aus anderen Gründen nicht arbeiten - wenn mein regulärer Ausdruck alles in der Nähe des Datumsformates kommt ich oben angegeben. Ich musste meinen eigenen regulären Ausdruck bilden, da ich nichts aus in der Welt wie fand, was ich wollte.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Cambridge Cares About AIDS: Request an Asset</title>
<link type="text/css" rel="stylesheet" href="styles.css" />

<SCRIPT LANGUAGE="JavaScript">  // Original JavaScript code by Chirp Internet: www.chirp.com.au    // Please acknowledge use of this code by including this header.  //Code modified to validate a date/time field by Shannon Davis, Company Name Removed.

function checkDates(form)
{
checkDate(form.00N80000003LGJ5);
    checkDate(form.00N80000003LGNt);
}

 function checkDate(field)
 {
   var allowBlank = false;
var minYear = (new Date()).getFullYear();
var maxYear = 2100;

var errorMsg = "";

// regular expression to match required date format
re = /^(\d{1,2})\/(\d{1,2})\/(\d{4})\s(\d{1,2}):(\d{2})+\s([ap]m)+$/;

if(field.value != '') {
  if(regs = field.value.match(re)) {
    if(regs[1] < 1 || regs[1] > 12) {
      errorMsg = "Invalid value for day: " + regs[1];
    } else if(regs[2] < 1 || regs[2] > 31) {
      errorMsg = "Invalid value for month: " + regs[2];
   } else if(regs[3] < minYear || regs[3] > maxYear) {
      errorMsg = "Invalid value for year: " + regs[3] + " - must be between " + minYear + " and " + maxYear;
   }
  } else {
    errorMsg = "Invalid date format: " + field.value;
  }
} else if(!allowBlank) {
  errorMsg = "Empty date not allowed!";
}

if(errorMsg != "") {
  alert(errorMsg);
  field.focus();
  return false;
}
return true;
  }
</SCRIPT>

<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8">
</head>

<BODY>

    <div id="container">
        <div id="top_photo">
      <img src="images/ccaa_banner.jpg" alt="banner" width="800" height="181" />
        </div>

        <div id="left_colum" style="width: 200; height: 256"><a href="index.html">
                      <img src="images/cca_logo.gif" alt="logo" border="0" width="178" height="84" /></a>
                    <p class="address">Cambridge Cares About AIDS<br />17 Sellers Street<br /> Cambridge, MA 02139<br />617.661.3040</p>
                <br />

                </div>
                <div id="right_colum">
                        <div id="content">

<form id="form" name="form" action="https://www.salesforce.com/servlet/servlet.WebToCase?encoding=UTF-8" method="POST">

<input type=hidden name="orgid" value="00D80000000M3if">
<input type=hidden name="retURL" value="http://wilmwebtest/CCAA/thank_you.htm">

<table border=0>

<tr><TD><label for="email">CCA Email:*</label></TD><td><input  id="email" maxlength="80" name="email" size="40" type="text" /><br> </td></tr>

<tr>
<td><label for="subject">Subject:</label></td><td><input  id="subject" maxlength="80" name="subject" size="40" type="text" /><br></td>
</tr>
<tr><td>
<label for="description">Description*</label></td>
<td>
<textarea name="description" rows="4" cols="25"></textarea><br></td>
</tr><tr>
<input type="hidden" name="recordType" id="recordType" value="0012800000006ZWz">

<tr> <td colspan="2">
<p>Date Format: mm/dd/yyyy hh:mm am/pm<br>example: &quot;08/30/2009 12:00 am&quot;</td></tr>
<tr><td>When Needed (Start):*</td>
<td><input id="00N80000003LGJ5" name="00N80000003LGJ5" size="40" type="text" /></span><br></td></tr>
<tr>
<td>
When Needed (End):<span class="dateInput">*</td>
<TD>

<input  id="00N80000003LGNt" name="00N80000003LGNt" size="40" type="text" /></span><br></td>
</tr>
</table>
<input type="hidden"  id="external" name="external" value="1" /><br>

<input type="submit" name="submit" value="Submit Asset Request" onClick="checkDates    (this.form);" >

</form>

                        </div>
                </div>
            <div id="clearit">
            </div>
    </div>
   </body>
   </html>
War es hilfreich?

Lösung

Ihre Funktion checkdate ist richtig. Das Problem ist in Ihrer checkDates Funktion. Javascript nicht Variablen wie die mit Zahlen beginnen. Ändern Sie es an:

function checkDates(form)
{
    checkDate(form.elements['00N80000003LGJ5']);
    checkDate(form.elements['00N80000003LGNt']);
}

und es sollte wie vorgesehen.

Auch für ein ungültiges Datum, um aus der Form zu stornieren vorgelegt werden, müssen Sie einreichen die Schaltfläche ändern onClick-Attribut:

onclick="return checkDates( this.form )"

Ansonsten wird die Form ganz gleich gestellt werden, was.

Auf einer Seite zur Kenntnis, die Fehlermeldung Sie erwähnen, klingt wie eine klassische ‚WTF?‘ Internet Explorer Fehlermeldung. Auf die neueste Version von Internet Explorer (IE8) aktualisieren, welche Nachrichten als die vorherigen Versionen viel besser Fehler hat, oder mit Firefox. Firefox Fehlerkonsole ist unübertroffen, wenn es um das Aufspüren von Javascript kommt (und CSS) Fehler.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top