javascript - 使用带有文本区域和验证的 jQuery 提交 html 表单

标签 javascript jquery

我有以下 html

<form  action="" class="form-horizontal" id="submitForm">
  <input class="required input-xxlarge" type="text" placeholder="Please enter a suitable title" name="title">
  <br><br>
  <div id='container' class="well">
    <br>
    <textarea class="span8 required" id='mytextarea' wrap='on'>
      Please enter some value
    </textarea>
    <br>
    <input class="btn btn-info" type="submit" id="submit-button" value="Submit">
  </div>

</form>

当用户单击提交时,我想将文本区域数据以及文本数据发送到网址。我也在使用validation plugin ,只是为了确保客户端验证。

以下是我的 jQuery:

 $(function() {
    $("#submitForm").submit(function(){
        if ($("#submitForm").validate()){
            $.post("/create/post/",
                   {'data':$('#mytextarea').val()},
                   function(data){
                       console.log(data);
                       alert(data);
                   });
        }
    });
    });

目前看来还是不行,请问是哪里出了问题?如何覆盖提交按钮,执行验证,然后将数据发布到服务器?

最佳答案

validate()只是插件的初始化方法,而不是用于检查表单是否有效的方法。您提供的代码始终“验证”为 true,因为 validate() 返回验证对象。实际检查表单是否有效的是valid()是为了.

此外,如Demao wrote ,您需要停止事件传播,以便使用 ajax 提交表单。一种方法是在回调结束时返回 false。

所以你的代码应该是这样的:

$(function() {
    $("#submitForm").validate();

    $("#submitForm").submit(function(){                       
        if ($("#submitForm").valid()){
            $.post("/create/post/",
                   {'data':$('#mytextarea').val()},
                   function(data){
                       console.log(data);
                       alert(data);
                   });
        }
        return false;
    });
 });​

这是一个演示:http://jsfiddle.net/hzcF7/

执行此操作的另一种方法是让插件自行进行验证,并在初始化验证对象时使用 submitHandler 选项告诉它在表单有效时该怎么做。像这样:

$(function() {
    $("#submitForm").validate({
        submitHandler: function() {
            $.post("/create/post/",
               {'data':$('#mytextarea').val()},
               function(data){
                   console.log(data);
                   alert(data);
               });
        }
    });
 });​​​

Demo

关于javascript - 使用带有文本区域和验证的 jQuery 提交 html 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12586262/

相关文章:

javascript - meteor :带有参数的渲染模板

javascript - jquery 有没有更好的方法来做到这一点?

javascript - V-for 迭代破坏了样式

javascript - ScrollMagic:setClassToggle() 不适用于 DOM 对象作为参数

javascript - 最快的 jQuery 自动省略号插件?

php - Facebook PHP SDK getUser() 在 Windows 上的 Safari 中返回 0

javascript - 突出显示表格行并更改文本颜色

php - 如何将表单数据从 JavaScript 传递到 PHP,然后再传递回来?

javascript - 如何使用 JQuery 获取 HTML 元素数组中的 HTML 元素

javascript - 如何使用jQuery找到离当前位置最近的元素