2010-11-14 6 views
0

J'ai un formulaire qui sur submit devrait voir si la zone de texte n'a pas de texte ou le texte de l'espace réservé.Formulaire d'arrêt à soumettre

Si c'est le cas, il ne devrait pas le soumettre. quelque chose comme la validation. Je ne suis pas en mesure d'arrêter la soumission du formulaire.

$(document).ready(function() { 
    var options = { 
     target: '.user-status', 
     // target element(s) to be updated with server response 
     beforeSubmit: showRequest, 
     // pre-submit callback 
     success: showResponse, 
     // post-submit callback 
     // other available options: 
     //url:  url   // override for form's 'action' attribute 
     //type:  type  // 'get' or 'post', override for form's 'method' attribute 
     //dataType: null  // 'xml', 'script', or 'json' (expected server response type) 
     //clearForm: true  // clear all form fields after successful submit 
     resetForm: true // reset the form after successful submit 
     // $.ajax options can be used here too, for example: 
     //timeout: 3000 
    }; 

    $('#updateStatus').submit(function() { 
     $(this).ajaxSubmit(options); 
     return false; // prevent a new request 
    }); 

    function showRequest(formData, jqForm, options) { 

     var textbox = $('#StatusMessageMessage').val(); 
     if ((textbox == '') || (textbox == "What have you been eating ?")) { 
      alert(text); 
      return false; 
     } else { 
      $('#StatusMessageMessage').attr('disabled', true); 
     } 

    } 

    function showResponse(responseText, statusText, xhr, $form) { 
     $('#StatusMessageMessage').attr('disabled', false); 
    } 

    statusMEssagebox(); 


}); 



function statusMEssagebox() { 
    var textholder = $('#StatusMessageMessage').val(); 

    $('#StatusMessageMessage').focus(function() { 
     if ($(this).val() == textholder) $(this).val(""); 

     $(this).animate({ 
      "height": "48px", 
     }, "fast"); 
     $('.share').slideDown("fast"); 
     $(this).TextAreaExpander(48, 75); 

    }); 

    $('#StatusMessageMessage').blur(function() { 
     if ($(this).val() == "") { 
      $(this).val(textholder); 
      $('.share').slideUp("fast"); 
      $(this).animate({ 
       "height": "18px", 
      }, "fast"); 
     } 
    }); 
} 

Répondre

1

Je vois que vous utilisez le plugin jquery form pour ajaxifier votre formulaire. Il y a un example dans la documentation illustrant comment y parvenir d'une manière élégante. Vous n'avez pas besoin de vous abonner à l'événement .submit du formulaire et de le soumettre manuellement en utilisant .ajaxSubmmit. Vous pouvez simplement essayer ceci:

$(function() { 
    $('#updateStatus').ajaxForm({ 
     beforeSubmit: function(formData, jqForm, options) { 
      var value = $('#StatusMessageMessage').val(); 
      if (value == '' || value == 'What have you been eating ?') { 
       return false; 
      } 
     } 
    }); 
}); 
+0

merci. donc je devrais le placer sur soumettre pas sur le clic? va essayer –

+0

Non, pas sur soumettre, ni sur cliquer. Dans devrait être dans '$ (document) .ready' comme dans mon exemple. Vous déclarez simplement que 'updateStatus' sera un formulaire ajax signifiant que lorsque le formulaire est soumis, il enverra une requête ajax au lieu d'une requête normale. Nous sommes également abonnés à l'événement 'beforeSubmit' qui nous permet d'annuler la soumission en cas d'erreur de validation. –

+0

il est à l'intérieur du document prêt. J'ai modifié le code. maintenant, lorsque la validation échoue, il envoie une requête normale au lieu d'ajax. :( –

1

Vous utilisez l'opérateur d'égalité plutôt que la comparaison.

Ce:

if ((textbox = '') || (textbox = "What have you been eating ?")) { 
Problem -----^ 

devrait être:

if (textbox == '' || textbox == "What have you been eating ?") { 

Vous pouvez également voir comment le formulaire soumettre via Ajax en utilisant jQuery:

+0

J'ai changé cela. encore il n'arrête pas la forme à soumettre par soumission normale (en essayant ajax ici) –