2009-09-24 8 views
1

J'essaie d'appeler une autre fonction jQuery confirmer si est vrai, voici le code:une autre fonction jQuery Calling confirmer si est vrai

jQuery("#adminForm_1").submit(function() { 

    var empty = false; 
    jQuery(":input", "#adminForm_1").each(function() { 
     empty = (jQuery(this).val() == "") ? true : empty; 
    }); 
    if (empty) { 

     if (confirm('You have not filled out all of the fields, do you wish to continue?')) { 

      jQuery("#adminForm_1").validationEngine({ 
       ajaxSubmit: true, 
       ajaxSubmitFile: "/index.php?option=com_database&view=tripdetails&Itemid=12&client=1&task=save", 
       ajaxSubmitMessage: "Client Trip Details Saved", 
       inlineValidation: false, 
       success: false, 
       failure: function() {} 
      }); 

     } else { 
      return false; 
     }; 

    } 

}); 

^^ le code ci-dessus ne fonctionne pas, mais vous voir ce que j'essaie de faire ..

+0

Que se passe-t-il lorsque vous l'exécutez? – karim79

+0

il actualise la page et n'appelle pas le scipt .validationEngine .. pas d'erreurs dans FF si .. – SoulieBaby

+0

comme dans aucune erreur javascript .. :) – SoulieBaby

Répondre

3

Vous devez empêcher l'action par défaut du navigateur sur le formulaire, qui est de le soumettre au serveur de la manière traditionnelle. Soit return false à la fin de votre soumettre gestionnaire, ou mettre e.preventDefault() au début:

jQuery("#adminForm_1").submit(function (e) { 
    e.preventDefault(); 
    ... 

ou:

jQuery("#adminForm_1").submit(function() { 

    var empty = false; 
    jQuery(":input", "#adminForm_1").each(function() { 
     empty = (jQuery(this).val() == "") ? true : empty; 
    }); 
    if (empty) { 
     if (confirm('You have not filled out all of the fields, do you wish to continue?')) { 
      ... 
      }); 
     } 
    } 
    return false; 
}); 

Voir preventDefault:

Prévient le navigateur d'exécuter par défaut action. Utilisez la méthode isDefaultPrevented pour savoir si cette méthode a déjà été appelée (sur cet objet événement ).

En tant que côté note return false a le même effet que preventDefault plus il arrête le barbotage de l'événement à des éléments parents. Le mécanisme de jQuery pour réaliser cela est dans la méthode stopPropagation. En d'autres termes, return false = e.preventDefault + e.stopPropagation

1

Vous n'êtes pas arrêter l'événement présenter « normal » de se propager - essayez d'ajouter return false après la méthode .validationEnginge() (alternativement le déplacer hors du bloc if):

jQuery("#adminForm_1").submit(function() { 
    var empty = false; 
    jQuery(":input", "#adminForm_1").each(function() { 
     empty = (jQuery(this).val() == "") ? true : empty; 
    }); 
    if (empty) { 
     if (confirm('You have not filled out all of the fields, do you wish to continue?')) { 
      jQuery("#adminForm_1").validationEngine({ 
       ajaxSubmit: true, 
       ajaxSubmitFile: "/index.php?option=com_database&view=tripdetails&Itemid=12&client=1&task=save", 
       ajaxSubmitMessage: "Client Trip Details Saved", 
       inlineValidation: false, 
       success: false, 
       failure: function() {} 
      }); 
     } 
     return false; 
    } 
}); 

Ou même

jQuery("#adminForm_1").submit(function() { 
    var empty = false; 
    jQuery(":input", "#adminForm_1").each(function() { 
     empty = (jQuery(this).val() == "") ? true : empty; 
    }); 
    if (empty) { 
     if (confirm(...)) { 
      jQuery("#adminForm_1").validationEngine({ ... }); 
     } 
    } 
    return false; 
}); 
Questions connexes