1

I am using this js code to validate a proper email is enetered into a form. If not, an warning box pops up.

function validateForm() {   
    var valid = true;
    var errMsg = "";
    var email = document.emailform.email.value;
    //var fname = document.emailform.fname.value;
    var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;

   //if(fname.length <= 0) {
      //valid = false;
      //errMsg += "Please provide a valid first name.\n";
   //}
   if(email.length <= 0) {
      valid = false;
      errMsg += "Email address is required.\n";
   } else {
      if (!filter.test(email)) {
         valid = false;
         errMsg += "Please provide a valid email address.\n";
      }
   }   
   if (errMsg.length > 0) {
      alert(errMsg);
      return false;
   }
   }

Before my closing I have this...

<script>$('#awform').submit(validateForm);</script>

That works just fine.

I have another javascript code that I generally enter before the closing body tag, which works fine under normal circumstances.

<script language="JavaScript" type="text/javascript"> cbr202=Math.random()*10000000000000000;document.write('<scr'+'ipt language="JavaScript" src="http://mywebsite.com/track/static/landing.php?lpip=123&202cb='+cbr202+'" type="text/javascript"></scr' + 'ipt>'); </script>

This last piece is for a custom analytics program I use.

The problem I'm running into is that when I use the two scripts together, the validation no longer works.

So I do...

<script language="JavaScript" type="text/javascript"> cbr202=Math.random()*10000000000000000;document.write('<scr'+'ipt language="JavaScript" src="http://mywebsite.com/track/static/landing.php?lpip=123&202cb='+cbr202+'" type="text/javascript"></scr' + 'ipt>'); </script>
<script>$('#awform').submit(validateForm);</script>
</body>

As requested, here's what the tracking script looks like....

function t202Init(){
    //this grabs the cid, but if they set a forced kw, this will be replaced 

    if (readCookie('t202forcedkw')) {
        var cid = readCookie('t202forcedkw');
    } else {
        var cid = t202GetVar('cid');
    }

    var lpip = '<? echo htmlentities($_GET['lpip']); ?>';
    var campid = t202GetVar('campid');
    var OVRAW = t202GetVar('OVRAW');
    var OVKEY = t202GetVar('OVKEY');
    var OVMTC = t202GetVar('OVMTC');
    var c1 = t202GetVar('c1');
    var c2 = t202GetVar('c2');
    var c3 = t202GetVar('c3');
    var c4 = t202GetVar('c4');
    var target_passthrough = t202GetVar('target_passthrough');
    var keyword = t202GetVar('keyword');
    var referer = document.referrer;
    var resolution = screen.width+'x'+screen.height;
    var language = navigator.appName=='Netscape'?navigator.language:navigator.browserLanguage; 
    language = language.substr(0,2); 

    document.write("<script src=\"<?php echo $strProtocol; ?>://<? echo $_SERVER['SERVER_NAME']; ?>/jump/static/record.php?lpip=" + t202Enc(lpip)
        + "&campid="                + t202Enc(campid)
        + "&cid="               + cid
        + "&OVRAW="                 + t202Enc(OVRAW)
        + "&OVKEY="                 + t202Enc(OVKEY)
        + "&OVMTC="                 + t202Enc(OVMTC)
        + "&c1="                    + t202Enc(c1)
        + "&c2="                    + t202Enc(c2)
        + "&c3="                    + t202Enc(c3)
        + "&c4="                    + t202Enc(c4)
        + "&target_passthrough="    + t202Enc(target_passthrough)
        + "&keyword="               + t202Enc(keyword)
        + "&referer="               + t202Enc(referer)
        + "&resolution="            + t202Enc(resolution)
        + "&language="              + t202Enc(language)
        + "\" type=\"text/javascript\" ></script>"
    );

}

function  t202Enc(e){
    return encodeURIComponent(e);

}

function  t202GetVar(name){
    get_string = document.location.search;         
     return_value = '';

     do { 
        name_index = get_string.indexOf(name + '=');

        if(name_index != -1) {
            get_string = get_string.substr(name_index + name.length + 1, get_string.length - name_index);

            end_of_value = get_string.indexOf('&');
            if(end_of_value != -1) {                
                value = get_string.substr(0, end_of_value);                
            } else {                
                value = get_string;                
            }

            if(return_value == '' || value == '') {
                return_value += value;
            } else {
                return_value += ', ' + value;
            }
          }
        } 

        while(name_index != -1)

         //Restores all the blank spaces.
         space = return_value.indexOf('+');
         while(space != -1) { 
            return_value = return_value.substr(0, space) + ' ' + 
            return_value.substr(space + 1, return_value.length);

            space = return_value.indexOf('+');
          }

     return(return_value);

}

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";

}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;

}

function eraseCookie(name) {
    createCookie(name,"",-1);
}


t202Init();
5
  • 1
    What error shows up in the console? Commented Dec 21, 2012 at 19:42
  • The code seems legit. Most likely the culprit is the custom analytics program. Commented Dec 21, 2012 at 19:44
  • No error messages in the console. I am loading jQuery via Google API. Commented Dec 21, 2012 at 19:51
  • 1
    As general rule, don't use document.write unless you're dynamically writing a new popup you just created with using window.open. Commented Dec 21, 2012 at 19:53
  • Can we see what the tracking JavaScript looks like? Commented Dec 21, 2012 at 21:23

3 Answers 3

3

Try switching the order of the two scripts. It seems that the custom analytics program is running document.write which is a bit nasty and may cause the rest of the document to not be parsed correctly.

Sign up to request clarification or add additional context in comments.

Comments

0

Your embedded Javascript tags can break your script. Whenever I try to do a script of the form:

<script>
   // Some stuff here
   <script>
       // More stuff here
   </script>
 </script>

The script breaks. Try using a different method to load your analytics.

Comments

0

Why not using jQuery to add the script-tag. You obviously have jQuery included.

Try

<script type="text/javascript">
    var cbr202 = Math.random() *10000000000000000;
    $('head').append('<scr'+'ipt type="text/javascript" src="http://mywebsite.com/track/static/landing.php?lpip=123&202cb='+cbr202+'" />');​
</script>

4 Comments

I tried your code and the analytics isn't work properly with this method.
There is a single quote missing at the end after >.
Thanks, didn't notice that. Unfortunately that didn't solve it.
I'm wondering about that script. I'm really not sure if it's possible to multiplicate with an so long number '10000000000000000'. The max int size afaik is 9007199254740992. See also here: stackoverflow.com/questions/307179/…

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.