2010-11-14 48 views
0

我有一个形式,在提交应该看到,如果文本区域没有文字或占位符文本。停止对表格所需提交

IIF它它不应该提交。像验证一样。我无法停止表单提交。

$(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"); 
     } 
    }); 
} 

回答

1

我看到你使用jQuery形式插件ajaxify表单。文档中有一个example,说明如何以优雅的方式实现这一点。您无需订阅表格的.submit事件,并使用.ajaxSubmmit手动提交。你可以简单地尝试这个办法:

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

谢谢。所以我应该把它放在提交不点击?将尝试 – 2010-11-14 09:45:18

+0

不,不在提交,也不在点击。在我的例子中应该在$(document).ready'中。你只是声明'updateStatus'将是一个ajax表单,这意味着当表单被提交时它将发送一个ajax请求,而不是一个普通的请求。我们还订阅了'beforeSubmit'事件,它允许我们在发生验证错误时取消提交。 – 2010-11-14 09:46:23

+0

它在里面准备好文档。我编辑了代码。现在当验证失败时,它发送一个正常的请求,而不是ajax。 :( – 2010-11-14 09:50:41

1

您正在使用等号运算符而不是比较。

此:

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

应该是:

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

你也可以看到如何使用通过Ajax提交表单的jQuery:

+0

我改变了这一切。仍然不会停止通过正常提交提交表单(尝试在这里的AJAX) – 2010-11-14 09:56:37