2010-06-17 5 views
2

J'utilise le plugin Jquery Validation pour valider et soumettre mes formulaires.Jquery Validation - Supprimer les données de formulaire avec submitHandler

Je souhaite pouvoir supprimer les valeurs de champ de formulaire inutiles des données de formulaire avant qu'elles ne soient publiées sur le serveur.

Je pensais que la submitHandler serait le meilleur endroit pour cela - voici un échantillon de mon code:

submitHandler: function(form) { 
if (form.elements["billddress2"].value == "Suite/Apt"){ 
delete form.elements["billddress2"];  
} 

if (form.elements["mobile"].value == "Mobile Number"){ 
delete form.elements["mobile"]; 
} 

if (form.elements["questionid_46"].value == "Guest Email"){ 
delete form.elements["questionid_46"]; 
} 

form.submit(); 
} 

Le problème est que les données transmises obtient toujours. Je sais que j'ai les bonnes propriétés, puisque je les ai testées en utilisant form.elements ["name"]. Value.

Quelqu'un sait pourquoi je ne peux pas supprimer les propriétés de l'objet HTMLFormElement?

Répondre

2

Le problème est que delete est destiné à supprimer des propriétés d'objets, alors que vous essayez de supprimer des éléments du DOM. Dans votre fonction de rappel, form est un élément DOM, vous ne pouvez donc pas supprimer ses enfants avec delete. Vous pouvez essayer d'utiliser remove sur les éléments de formulaire (vous devrez les transformer en objets jQuery avec $ premier), comme ceci:

submitHandler: function(form) { 
    var form = $(form); 

    if (form.elements["billddress2"].value == "Suite/Apt"){ 
    $('input[name="billddress2"]', form).remove(); 
    } 

    if (form.elements["mobile"].value == "Mobile Number"){ 
    $('input[name="mobile"]', form).remove(); 
    } 

    if (form.elements["questionid_46"].value == "Guest Email"){ 
    $('input[name="questionid_46"]', form).remove(); 
    } 

    form.submit(); 
} 
Questions connexes