Comunidad de diseño web y desarrollo en internet online

Problema con IE en Captcha de Formulario

Citar            
MensajeEscrito el 04 May 2012 07:05 pm
Bueno Amigos, debuto en este foro este es mi primir post.
El tema es el siguiente;

Tengo un formulario aqui http://centrodeamor.host22.com/
El tema es que en IE cuando se coloca la suma que requiere el captcha este si o si da error en la validacion, cosa que en otros navegadores no.

A que se debe?

les dejo el html

Código HTML :

<!-- fORMULARIO -->

<div id="main-container">

   <div id="form-container">
    <h1 id="destinatario">Destinatario</h1>
    <p>Deci lo que quieras a un destinatario en forma anónima o permitiendo que vea tu e-mail</p>
    
    <form id="contact-form" name="contact-form" method="post" action="submit.php">
      <table width="100%" border="0" cellspacing="0" cellpadding="5">
        <tr>
          <td width="15%"><label for="name">Nombre</label></td>
          <td width="70%"><input type="text" class="validate[required,custom[onlyLetter]]" name="name" id="name" value="<?=$_SESSION['post']['name']?>" /></td>
          <td width="15%" id="errOffset">&nbsp;</td>
        </tr>
        <tr>
          <td><label for="email">Tu Email</label></td>
          <td><input type="text" class="validate[required,custom[email]]" name="email" id="email" value="<?=$_SESSION['post']['email']?>" /></td>
          <td>&nbsp;</td>
        </tr>
      <tr>
          <td><label for="email2">Email destinatario</label></td>
          <td><input type="text" class="validate[required,custom[email]]" name="email2" id="email" value="<?=$_SESSION['post']['email2']?>" /></td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td><label for="subject">Modo de envio</label></td>
          <td><select name="subject" id="subject">
            <option value="" selected="selected"> - Elegi una opcion -</option>
            <option value="Email anonimo">Email anonimo</option>
            <option value="Email con destinatario">Email con destinatario</option>
      
     
          </select>          </td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td valign="top"><label for="message">Mensaje</label></td>
          <td><textarea name="message" id="message" class="validate[required]" cols="35" rows="5"><?=$_SESSION['post']['message']?></textarea></td>
          <td valign="top">&nbsp;</td>
        </tr>
        <tr>
          <td><label for="captcha"><?=$_SESSION['n1']?> + <?=$_SESSION['n2']?> =</label></td>
          <td><input type="text"  name="captcha" id="captcha" /></td>
          <td valign="top">&nbsp;</td>
        </tr>
        <tr>
          <td valign="top">&nbsp;</td>
          <td colspan="2"><input type="submit" name="button" id="button" value="Enviar" />
          <input type="reset" name="button2" id="button2" value="Borrar" />
          
          <?=$str?>          <img id="loading" src="img/ajax-load.gif" width="16" height="16" alt="loading" /></td>
        </tr>
      </table>
      </form>
      <?=$success?>
    </div>

</div>
</div>

<!-- END FORMULARIO -->



este es el submit.php

Código PHP :

<?php

/* config start */

$emailAddress = '[email protected]';

/* config end */


require "phpmailer/class.phpmailer.php";

session_name("fancyform");
session_start();


foreach($_POST as $k=>$v)
{
   if(ini_get('magic_quotes_gpc'))
   $_POST[$k]=stripslashes($_POST[$k]);
   
   $_POST[$k]=htmlspecialchars(strip_tags($_POST[$k]));
}


$err = array();

if(!checkLen('name'))
   $err[]='The name field is too short or empty!';

if(!checkLen('email'))
   $err[]='The email field is too short or empty!';
else if(!checkEmail($_POST['email']))
   $err[]='Your email is not valid!';
   
if(!checkLen('email2'))
   $err[]='The email field is too short or empty!';
else if(!checkEmail($_POST['email2']))
   $err[]='Your email is not valid!';

if(!checkLen('subject'))
   $err[]='You have not selected a subject!';

if(!checkLen('message'))
   $err[]='The message field is too short or empty!';

if((int)$_POST['captcha'] != $_SESSION['expect'])
   $err[]='The captcha code is wrong!';


if(count($err))
{
   if($_POST['ajax'])
   {
      echo '-1';
   }

   else if($_SERVER['HTTP_REFERER'])
   {
      $_SESSION['errStr'] = implode('<br />',$err);
      $_SESSION['post']=$_POST;
      
      header('Location: '.$_SERVER['HTTP_REFERER']);
   }

   exit;
}


$msg=
'Name:   '.$_POST['name'].'<br />
Email remitente:   '.$_POST['email'].'<br />
Email destinatario:   '.$_POST['email2'].'<br />
Modo de envio:   '.$_POST['subject'].'<br />
IP:   '.$_SERVER['REMOTE_ADDR'].'<br /><br />

Message:<br /><br />

'.nl2br($_POST['message']).'

';


$mail = new PHPMailer();
$mail->IsMail();

$mail->AddReplyTo($_POST['email'], $_POST['name']);
$mail->AddAddress($emailAddress);
$mail->SetFrom($_POST['email'], $_POST['name']);
$mail->Subject = "Nuevo mensaje | NOMEANIMOADECIRLO";

$mail->MsgHTML($msg);

$mail->Send();


unset($_SESSION['post']);

if($_POST['ajax'])
{
   echo '1';
}
else
{
   $_SESSION['sent']=1;
   
   if($_SERVER['HTTP_REFERER'])
      header('Location: '.$_SERVER['HTTP_REFERER']);
   
   exit;
}

function checkLen($str,$len=2)
{
   return isset($_POST[$str]) && mb_strlen(strip_tags($_POST[$str]),"utf-8") > $len;
}

function checkEmail($str)
{
   return preg_match("/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $str);
}

?>


este es ek jquery.validationEngine.js

Código :

/*
 * Inline Form Validation Engine 1.4, jQuery plugin
 * 
 * Copyright(c) 2009, Cedric Dugas
 * http://www.position-relative.net
 *   
 * Form validation engine which allow custom regex rules to be added.
 * Licenced under the MIT Licence
 */
(function($) {
   $.fn.validationEngine = function(settings) {

   if($.validationEngineLanguage){            // IS THERE A LANGUAGE LOCALISATION ?
      allRules = $.validationEngineLanguage.allRules
   }else{
      allRules =    {"required":{             // Add your regex rules here, you can take telephone as an example
                  "regex":"none",
                  "alertText":"* Este campo es obligatorio",
                  "alertTextCheckboxMultiple":"* Por favor seleccione una opción",
                  "alertTextCheckboxe":"* Esta casilla se requiere"},
               "length":{
                  "regex":"none",
                  "alertText":"*Between ",
                  "alertText2":" and ",
                  "alertText3": " characters allowed"},
               "maxCheckbox":{
                  "regex":"none",
                  "alertText":"* Checks permitidos agotados"},   
               "minCheckbox":{
                  "regex":"none",
                  "alertText":"* Por favor seleccione ",
                  "alertText2":" options"},   
               "confirm":{
                  "regex":"none",
                  "alertText":"* Su casilla no coincide"},      
               "telephone":{
                  "regex":"/^[0-9\-\(\)\ ]+$/",
                  "alertText":"* Numero de telefono invalido"},   
               "email":{
                  "regex":"/^[\.a-z0-9_\-]+[@][a-z0-9_\-]+([.][a-z0-9_\-]+)+[a-z]{1,4}$/i",
                  "alertText":"* Casilla de Email invalida"},   
               "date":{
                         "regex":"/^[0-9]{4}\-\[0-9]{1,2}\-\[0-9]{1,2}$/",
                         "alertText":"* Fecha no valida, debe estar en formato AAAA-MM-DD"},
               "onlyNumber":{
                  "regex":"/^[0-9\ ]+$/",
                  "alertText":"* Solo numeros"},   
               "noSpecialCaracters":{
                  "regex":"/^[0-9a-zA-Z]+$/",
                  "alertText":"* No se permiten caracteres especiales"},   
               "ajaxUser":{
                  "file":"validateUser.php",
                  "alertTextOk":"* Este usuario esta disponible",   
                  "alertTextLoad":"* Cargando, por favor espere...",
                  "alertText":"* Este usuario ya existe"},   
               "ajaxName":{
                  "file":"validateUser.php",
                  "alertText":"* Este nombre ya esta en uso",
                  "alertTextOk":"* Este nombre esta disponible",   
                  "alertTextLoad":"* Cargando, por favor espere..."},      
               "onlyLetter":{
                  "regex":"/^[a-zA-Z\ \']+$/",
                  "alertText":"* Letras solamente"}
               }   
   }
    settings = jQuery.extend({
      allrules:allRules,               
      inlineValidation: true,   
      ajaxSubmit: false,
      promptPosition: "topRight",   // OPENNING BOX POSITION, IMPLEMENTED: topLeft, topRight, bottomLeft, centerRight, bottomRight
      success : false,
      failure : function() {}
   }, settings);   
   
   
 
   $.validationEngine.ajaxValidArray = new Array()   // ARRAY FOR AJAX: VALIDATION MEMORY 

   $(this).bind("submit", function(caller){   // ON FORM SUBMIT, CONTROL AJAX FUNCTION IF SPECIFIED ON DOCUMENT READY
      $.validationEngine.onSubmitValid = true;
      
      if($.validationEngine.submitValidation(this,settings) == false){
         if($.validationEngine.submitForm(this,settings) == true) {return false;}
      }else{
         settings.failure && settings.failure(); 
         return false;
      }      
   })
   if(settings.inlineValidation == true){       // Validating Inline ?
      
      $(this).find("[class^=validate]").not("[type=checkbox]").bind("blur", function(caller){   _inlinEvent(this)   })
      $(this).find("[class^=validate][type=checkbox]").bind("click", function(caller){      _inlinEvent(this)   })
      
         function _inlinEvent(caller){
            if($.validationEngine.intercept == false || !$.validationEngine.intercept){      // STOP INLINE VALIDATION THIS TIME ONLY
               $.validationEngine.onSubmitValid=false;
               $.validationEngine.loadValidation(caller,settings); 
            }else{
               $.validationEngine.intercept = false;
            }
         }
   }
};   
$.validationEngine = {
   submitForm : function(caller){
      if($.validationEngine.settings.ajaxSubmit){      
         $.ajax({
               type: "POST",
               url: $.validationEngine.settings.ajaxSubmitFile,
               async: true,
               data: $(caller).serialize(),
               beforeSend: function(){                     
                     
                  },
               success: function(data){
                  if(data == "true"){         // EVERYTING IS FINE, SHOW SUCCESS MESSAGE
                     $(caller).css("opacity",1)
                     $(caller).animate({opacity: 0, height: 0}, function(){
                        $(caller).css("display","none")
                        $(caller).before("<div class='ajaxSubmit'>"+$.validationEngine.settings.ajaxSubmitMessage+"</div>")
                        $.validationEngine.closePrompt(".formError",true)    
                        $(".ajaxSubmit").show("slow")
                        if ($.validationEngine.settings.success){   // AJAX SUCCESS, STOP THE LOCATION UPDATE
                        $.validationEngine.settings.success && $.validationEngine.settings.success(); 
                        return false;
                     }
                     })
                  }else{                  // HOUSTON WE GOT A PROBLEM (SOMETING IS NOT VALIDATING)
                     data = eval( "("+data+")");   
                     errorNumber = data.jsonValidateReturn.length   
                     for(index=0; index<errorNumber; index++){   
                        fieldId = data.jsonValidateReturn[index][0];
                        promptError = data.jsonValidateReturn[index][1];
                        type = data.jsonValidateReturn[index][2];
                        $.validationEngine.buildPrompt(fieldId,promptError,type);
                     }
                  }
               }
         })   
         return true;
      }
      if ($.validationEngine.settings.success){   // AJAX SUCCESS, STOP THE LOCATION UPDATE
         $.validationEngine.settings.success && $.validationEngine.settings.success(); 
         return true;
      }
      return false;
   },
   buildPrompt : function(caller,promptText,type,ajaxed) {         // ERROR PROMPT CREATION AND DISPLAY WHEN AN ERROR OCCUR
      var divFormError = document.createElement('div');
      var formErrorContent = document.createElement('div');
      
      linkTofield = $(caller).attr("id") + "formError";
      linkTofield = linkTofield.replace("[",""); linkTofield = linkTofield.replace("]","");
      
      $(divFormError).addClass("formError")
      
      if(type == "pass"){ $(divFormError).addClass("greenPopup") }
      if(type == "load"){ $(divFormError).addClass("blackPopup") }
      if(ajaxed){ $(divFormError).addClass("ajaxed") }
      
      $(divFormError).addClass(linkTofield)
      $(formErrorContent).addClass("formErrorContent")
      
      $("body").append(divFormError)
      $(divFormError).append(formErrorContent)
         
      if($.validationEngine.showTriangle != false){      // NO TRIANGLE ON MAX CHECKBOX AND RADIO
         var arrow = document.createElement('div')
         $(arrow).addClass("formErrorArrow")
         $(divFormError).append(arrow)
         if($.validationEngine.settings.promptPosition == "bottomLeft" || $.validationEngine.settings.promptPosition == "bottomRight"){
         $(arrow).addClass("formErrorArrowBottom")
         $(arrow).html('<div class="line1"><!-- --></div><div class="line2"><!-- --></div><div class="line3"><!-- --></div><div class="line4"><!-- --></div><div class="line5"><!-- --></div><div class="line6"><!-- --></div><div class="line7"><!-- --></div><div class="line8"><!-- --></div><div class="line9"><!-- --></div><div class="line10"><!-- --></div>');
      }
         if($.validationEngine.settings.promptPosition == "topLeft" || $.validationEngine.settings.promptPosition == "topRight"){
            $(divFormError).append(arrow)
            $(arrow).html('<div class="line10"><!-- --></div><div class="line9"><!-- --></div><div class="line8"><!-- --></div><div class="line7"><!-- --></div><div class="line6"><!-- --></div><div class="line5"><!-- --></div><div class="line4"><!-- --></div><div class="line3"><!-- --></div><div class="line2"><!-- --></div><div class="line1"><!-- --></div>');
         }
      }
      $(formErrorContent).html(promptText)
   
      callerTopPosition = $(caller).offset().top;
      callerleftPosition = $(caller).offset().left;
      callerWidth =  $(caller).width()
      inputHeight = $(divFormError).height()
   
      /* POSITIONNING */
      if($.validationEngine.settings.promptPosition == "topRight"){callerleftPosition +=  callerWidth -30; callerTopPosition += -inputHeight -10; }
      if($.validationEngine.settings.promptPosition == "topLeft"){ callerTopPosition += -inputHeight -10; }
      
      if($.validationEngine.settings.promptPosition == "centerRight"){ callerleftPosition =  $('#errOffset').offset().left; }
      
      if($.validationEngine.settings.promptPosition == "bottomLeft"){
         callerHeight =  $(caller).height();
         callerleftPosition = callerleftPosition;
         callerTopPosition = callerTopPosition + callerHeight + 15;
      }
      if($.validationEngine.settings.promptPosition == "bottomRight"){
         callerHeight =  $(caller).height();
         callerleftPosition +=  callerWidth -30;
         callerTopPosition +=  callerHeight + 15;
      }
      $(divFormError).css({
         top:callerTopPosition,
         left:callerleftPosition,
         opacity:0
      })
      return $(divFormError).animate({"opacity":0.87},function(){return true;});   
   },
   updatePromptText : function(caller,promptText,type,ajaxed) {   // UPDATE TEXT ERROR IF AN ERROR IS ALREADY DISPLAYED
      
      linkTofield = $(caller).attr("id") + "formError";
      linkTofield = linkTofield.replace("[",""); linkTofield = linkTofield.replace("]","");
      
      updateThisPrompt =  "."+ linkTofield

      
      (type == "pass") ? $(updateThisPrompt).addClass("greenPopup") : $(updateThisPrompt).removeClass("greenPopup");
      (type == "load") ? $(updateThisPrompt).addClass("blackPopup") : $(updateThisPrompt).removeClass("blackPopup");
      (ajaxed) ? $(updateThisPrompt).addClass("ajaxed") : $(updateThisPrompt).removeClass("ajaxed");
   
      $(updateThisPrompt).find(".formErrorContent").html(promptText)
      callerTopPosition  = $(caller).offset().top;
      inputHeight = $(updateThisPrompt).height()
      
      if($.validationEngine.settings.promptPosition == "bottomLeft" || $.validationEngine.settings.promptPosition == "bottomRight"){
         callerHeight =  $(caller).height()
         callerTopPosition =  callerTopPosition + callerHeight + 15
      }
      if($.validationEngine.settings.promptPosition == "centerRight"){  callerleftPosition +=  callerWidth +13;}
      if($.validationEngine.settings.promptPosition == "topLeft" || $.validationEngine.settings.promptPosition == "topRight"){
         callerTopPosition = callerTopPosition  -inputHeight -10
      }
      $(updateThisPrompt).animate({
         top:callerTopPosition
      });
   },
   loadValidation : function(caller,settings) {      // GET VALIDATIONS TO BE EXECUTED
      $.validationEngine.settings = settings
      rulesParsing = $(caller).attr('class');
      rulesRegExp = /\[(.*)\]/;
      getRules = rulesRegExp.exec(rulesParsing);
      str = getRules[1]
      pattern = /\W+/;
      result= str.split(pattern);   
   
      var validateCalll = $.validationEngine.validateCall(caller,result)
      return validateCalll
   },
   validateCall : function(caller,rules) {   // EXECUTE VALIDATION REQUIRED BY THE USER FOR THIS FIELD
      var promptText =""   
      var prompt = $(caller).attr("id");
      var caller = caller;
      ajaxValidate = false
      var callerName = $(caller).attr("name")
      $.validationEngine.isError = false;
      $.validationEngine.showTriangle = true
      callerType = $(caller).attr("type");

      for (i=0; i<rules.length;i++){
         switch (rules[i]){
         case "optional": 
            if(!$(caller).val()){
               $.validationEngine.closePrompt(caller)
               return $.validationEngine.isError
            }
         break;
         case "required": 
            _required(caller,rules);
         break;
         case "custom": 
             _customRegex(caller,rules,i);
         break;
         case "ajax": 
            if(!$.validationEngine.onSubmitValid){
               _ajax(caller,rules,i);   
            }
         break;
         case "length": 
             _length(caller,rules,i);
         break;
         case "maxCheckbox": 
            _maxCheckbox(caller,rules,i);
             groupname = $(caller).attr("name");
             caller = $("input[name='"+groupname+"']")
         break;
         case "minCheckbox": 
            _minCheckbox(caller,rules,i);
            groupname = $(caller).attr("name");
             caller = $("input[name='"+groupname+"']")
         break;
         case "confirm": 
             _confirm(caller,rules,i);
         break;
         default :;
         };
      };
      if ($.validationEngine.isError == true){
         
         radioHackOpen();
         if ($.validationEngine.isError == true){ // show only one
            ($("div."+prompt).size() ==0) ? $.validationEngine.buildPrompt(caller,promptText,"error")   : $.validationEngine.updatePromptText(caller,promptText);
         }
      }else{
         radioHackClose();
         $.validationEngine.closePrompt(caller);
      }      
      /* UNFORTUNATE RADIO AND CHECKBOX GROUP HACKS */
      /* As my validation is looping input with id's we need a hack for my validation to understand to group these inputs */
      function radioHackOpen(){
   
         if($("input[name="+callerName+"]").size()> 1 && callerType == "radio") {      // Hack for radio group button, the validation go the first radio
            caller = $("input[name="+callerName+"]:first");
            $.validationEngine.showTriangle = false;
            var callerId ="."+ $(caller).attr("id");
            if($(callerId).size()==0){ $.validationEngine.isError = true; }else{ $.validationEngine.isError = false;}
         }
         if($("input[name="+callerName+"]").size()> 1 && callerType == "checkbox") {      // Hack for checkbox group button, the validation go the first radio
            caller = $("input[name="+callerName+"]:first");
            $.validationEngine.showTriangle = false;
            var callerId ="div."+ $(caller).attr("id");
            if($(callerId).size()==0){ $.validationEngine.isError = true; }else{ $.validationEngine.isError = false;}
         }
      }
      function radioHackClose(){
         if($("input[name="+callerName+"]").size()> 1 && callerType == "radio") {      // Hack for radio group button, the validation go the first radio
            caller = $("input[name="+callerName+"]:first");
         }
         if($("input[name="+callerName+"]").size()> 1 && callerType == "checkbox") {      // Hack for checkbox group button, the validation go the first radio
            caller = $("input[name="+callerName+"]:first");
         }
      }
      /* VALIDATION FUNCTIONS */
      function _required(caller,rules){   // VALIDATE BLANK FIELD
         callerType = $(caller).attr("type");
         if (callerType == "text" || callerType == "password" || callerType == "textarea"){
                        
            if(!$(caller).val()){
               $.validationEngine.isError = true;
               promptText += $.validationEngine.settings.allrules[rules[i]].alertText+"<br />";
            }   
         }   
         if (callerType == "radio" || callerType == "checkbox" ){
            callerName = $(caller).attr("name");
      
            if($("input[name="+callerName+"]:checked").size() == 0) {
               $.validationEngine.isError = true;
               if($("input[name="+callerName+"]").size() ==1) {
                  promptText += $.validationEngine.settings.allrules[rules[i]].alertTextCheckboxe+"<br />"; 
               }else{
                   promptText += $.validationEngine.settings.allrules[rules[i]].alertTextCheckboxMultiple+"<br />";
               }   
            }
         }   
         if (callerType == "select-one") { // added by [email protected] for select boxes, Thank you
               callerName = $(caller).attr("id");
            
            if(!$("select[name="+callerName+"]").val()) {
               $.validationEngine.isError = true;
               promptText += $.validationEngine.settings.allrules[rules[i]].alertText+"<br />";
            }
         }
         if (callerType == "select-multiple") { // added by [email protected] for select boxes, Thank you
               callerName = $(caller).attr("id");
            
            if(!$("#"+callerName).val()) {
               $.validationEngine.isError = true;
               promptText += $.validationEngine.settings.allrules[rules[i]].alertText+"<br />";
            }
         }
      }
      function _customRegex(caller,rules,position){       // VALIDATE REGEX RULES
         customRule = rules[position+1];
         pattern = eval($.validationEngine.settings.allrules[customRule].regex);
         
         if(!pattern.test($(caller).attr('value'))){
            $.validationEngine.isError = true;
            promptText += $.validationEngine.settings.allrules[customRule].alertText+"<br />";
         }
      }
      function _ajax(caller,rules,position){             // VALIDATE AJAX RULES
         
         customAjaxRule = rules[position+1];
         postfile = $.validationEngine.settings.allrules[customAjaxRule].file;
         fieldValue = $(caller).val();
         ajaxCaller = caller;
         fieldId = $(caller).attr("id");
         ajaxValidate = true;
         ajaxisError = $.validationEngine.isError;
         
         /* AJAX VALIDATION HAS ITS OWN UPDATE AND BUILD UNLIKE OTHER RULES */   
         if(!ajaxisError){
            $.ajax({
                  type: "POST",
                  url: postfile,
                  async: true,
                  data: "validateValue="+fieldValue+"&validateId="+fieldId+"&validateError="+customAjaxRule,
                  beforeSend: function(){      // BUILD A LOADING PROMPT IF LOAD TEXT EXIST                  
                     if($.validationEngine.settings.allrules[customAjaxRule].alertTextLoad){
                     
                        if(!$("div."+fieldId)[0]){                           
                          return $.validationEngine.buildPrompt(ajaxCaller,$.validationEngine.settings.allrules[customAjaxRule].alertTextLoad,"load");
                       }else{
                          $.validationEngine.updatePromptText(ajaxCaller,$.validationEngine.settings.allrules[customAjaxRule].alertTextLoad,"load");
                       }
                     }
                  },
               success: function(data){               // GET SUCCESS DATA RETURN JSON
                  data = eval( "("+data+")");            // GET JSON DATA FROM PHP AND PARSE IT
                  ajaxisError = data.jsonValidateReturn[2];
                  customAjaxRule = data.jsonValidateReturn[1];
                  ajaxCaller = $("#"+data.jsonValidateReturn[0])[0];
                  fieldId = ajaxCaller;
                  ajaxErrorLength = $.validationEngine.ajaxValidArray.length
                  existInarray = false;
                  
                    if(ajaxisError == "false"){         // DATA FALSE UPDATE PROMPT WITH ERROR;
                       
                       _checkInArray(false)            // Check if ajax validation alreay used on this field
                       
                       if(!existInarray){                // Add ajax error to stop submit             
                          $.validationEngine.ajaxValidArray[ajaxErrorLength] =  new Array(2)
                          $.validationEngine.ajaxValidArray[ajaxErrorLength][0] = fieldId
                          $.validationEngine.ajaxValidArray[ajaxErrorLength][1] = false
                          existInarray = false;
                       }
            
                       $.validationEngine.ajaxValid = false;
                     promptText += $.validationEngine.settings.allrules[customAjaxRule].alertText+"<br />";
                     $.validationEngine.updatePromptText(ajaxCaller,promptText,"",true);            
                   }else{    
                      _checkInArray(true)
               
                      $.validationEngine.ajaxValid = true;                      
                       if($.validationEngine.settings.allrules[customAjaxRule].alertTextOk){   // NO OK TEXT MEAN CLOSE PROMPT             
                                       $.validationEngine.updatePromptText(ajaxCaller,$.validationEngine.settings.allrules[customAjaxRule].alertTextOk,"pass",true);
                       }else{
                          ajaxValidate = false;          
                          $.validationEngine.closePrompt(ajaxCaller);
                       }      
                    }
                      function  _checkInArray(validate){
                         for(x=0;x<ajaxErrorLength;x++){
                             if($.validationEngine.ajaxValidArray[x][0] == fieldId){
                                $.validationEngine.ajaxValidArray[x][1] = validate
                                existInarray = true;
                             
                             }
                          }
                      }
                }            
            });
         }
      }
      function _confirm(caller,rules,position){       // VALIDATE FIELD MATCH
         confirmField = rules[position+1];
         
         if($(caller).attr('value') != $("#"+confirmField).attr('value')){
            $.validationEngine.isError = true;
            promptText += $.validationEngine.settings.allrules["confirm"].alertText+"<br />";
         }
      }
      function _length(caller,rules,position){         // VALIDATE LENGTH
      
         startLength = eval(rules[position+1]);
         endLength = eval(rules[position+2]);
         feildLength = $(caller).attr('value').length;

         if(feildLength<startLength || feildLength>endLength){
            $.validationEngine.isError = true;
            promptText += $.validationEngine.settings.allrules["length"].alertText+startLength+$.validationEngine.settings.allrules["length"].alertText2+endLength+$.validationEngine.settings.allrules["length"].alertText3+"<br />"
         }
      }
      function _maxCheckbox(caller,rules,position){       // VALIDATE CHECKBOX NUMBER
      
         nbCheck = eval(rules[position+1]);
         groupname = $(caller).attr("name");
         groupSize = $("input[name='"+groupname+"']:checked").size();
         if(groupSize > nbCheck){   
            $.validationEngine.showTriangle = false
            $.validationEngine.isError = true;
            promptText += $.validationEngine.settings.allrules["maxCheckbox"].alertText+"<br />";
         }
      }
      function _minCheckbox(caller,rules,position){       // VALIDATE CHECKBOX NUMBER
      
         nbCheck = eval(rules[position+1]);
         groupname = $(caller).attr("name");
         groupSize = $("input[name='"+groupname+"']:checked").size();
         if(groupSize < nbCheck){   
            $.validationEngine.isError = true;
            $.validationEngine.showTriangle = false;
            promptText += $.validationEngine.settings.allrules["minCheckbox"].alertText+" "+nbCheck+" "+$.validationEngine.settings.allrules["minCheckbox"].alertText2+"<br />";
         }
      }
      return($.validationEngine.isError) ? $.validationEngine.isError : false;
   },
   closePrompt : function(caller,outside) {                  // CLOSE PROMPT WHEN ERROR CORRECTED
      if(outside){
         $(caller).fadeTo("fast",0,function(){
            $(caller).remove();
         });
         return false;
      }
      if(!ajaxValidate){
         linkTofield = $(caller).attr("id") + "formError";
         linkTofield = linkTofield.replace("[",""); linkTofield = linkTofield.replace("]","");
         
         closingPrompt = "."+linkTofield;
   
         $(closingPrompt).fadeTo("fast",0,function(){
            $(closingPrompt).remove();
         });
      }
   },
   submitValidation : function(caller,settings) {               // FORM SUBMIT VALIDATION LOOPING INLINE VALIDATION
      var stopForm = false;
      $.validationEngine.settings = settings
      $.validationEngine.ajaxValid = true
      $(caller).find(".formError").remove();
      var toValidateSize = $(caller).find("[class^=validate]").size();
      
      $(caller).find("[class^=validate]").each(function(){
         callerId = $(this).attr("id")
         if(!$("."+callerId).hasClass("ajaxed")){   // DO NOT UPDATE ALREADY AJAXED FIELDS (only happen if no normal errors, don't worry)
            var validationPass = $.validationEngine.loadValidation(this,settings);
            return(validationPass) ? stopForm = true : "";               
         }
      });
      ajaxErrorLength = $.validationEngine.ajaxValidArray.length      // LOOK IF SOME AJAX IS NOT VALIDATE
      for(x=0;x<ajaxErrorLength;x++){
          if($.validationEngine.ajaxValidArray[x][1] == false){
             $.validationEngine.ajaxValid = false
          }
       }
      if(stopForm || !$.validationEngine.ajaxValid){      // GET IF THERE IS AN ERROR OR NOT FROM THIS VALIDATION FUNCTIONS
         destination = $(".formError:not('.greenPopup'):first").offset().top;
         $("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, 1100);
         return true;
      }else{
         return false
      }
   }
}   
})(jQuery);



este es el script.js

Código :

$(document).ready(function(){
   $('#contact-form').jqTransform();

   $("button").click(function(){

      $(".formError").hide();

   });

   var use_ajax=true;
   $.validationEngine.settings={};

   $("#contact-form").validationEngine({
      inlineValidation: false,
      promptPosition: "centerRight",
      success :  function(){use_ajax=true},
      failure : function(){use_ajax=false;}
    })

   $("#contact-form").submit(function(e){

         if(!$('#subject').val().length)
         {
            $.validationEngine.buildPrompt(".jqTransformSelectWrapper","* Este campo es obligatorio","error")
            return false;
         }
         
         if(use_ajax)
         {
            $('#loading').css('visibility','visible');
            $.post('submit.php',$(this).serialize()+'&ajax=1',
            
               function(data){
                  if(parseInt(data)==-1)
                     $.validationEngine.buildPrompt("#captcha","* Wrong verification number!","error");
                     
                  else
                  {
                     $("#contact-form").hide('slow').after('<h1>Mensaje Enviado!</h1>');
                  }
                  
                  $('#loading').css('visibility','hidden');
               }
            
            );
         }
         e.preventDefault();
   })

});

Por datcom

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 04 May 2012 07:32 pm
Hola:
Para ser tu primer post te has lucido, intenta ser más específico y no poner tanto código, intenta aislar tu problema y expresarlo bien con palabras, mostrando el código suficiente.

Quizás la respuesta a tu pregunta sea tan sencilla que no necesite ni código para entenderla, o igual por el contrario necesite más de lo que has puesto. En cualquier caso tu no has puesto los trozos de código que fallan, has puesto todos los documentos al completo
:wtf:

Te dejo un par de links,
Baja y arregla mi archivo
Guia para obtener ayuda efectiva en los foros

Un saludo!.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 05 May 2012 02:27 pm
EL Problema pareciera ser el captcha en el navegador Explorel, Porque aunque se ponga la correcta suma que se pide, lo toma cmo invalido. Cosa que en los otros navegadores chrome, firefox o mismo la version 9 de Ie tampoco pasa, solo es con las versiones 6,7 y 8 de IE.

Por datcom

1 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.