首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQueryForm (插件)在提交时使用表单-> $(这个)做一些事情

jQueryForm (插件)在提交时使用表单-> $(这个)做一些事情
EN

Stack Overflow用户
提问于 2015-04-21 02:36:48
回答 3查看 60关注 0票数 3

我在一个页面上有多个表单,我使用jQueryForm插件来处理它们,而不需要重新加载页面。问题是,我需要一些视觉反应,表单提交工作与否,所以我改变的边框从灰色到绿色,如果它有效,红色如果它没有。

嗯,这适用于纯jQuery,但不适用于这个插件,因为当我使用$(this)时,它指的是函数本身。

有人知道怎么做吗?

代码语言:javascript
复制
var edit_form = {
    dataType: 'json',
    success:    function(output) {
        console.log($(this));
        $form = $(this);
        $form.css("border-color", "green");
        setTimeout(function(){
            $form.css("border-color", "#323131");
        }, 3000);
    },
    error: function(output) {
        console.log($(this));
        $form = $(this);
        $form.css("border-color", "red");
        setTimeout(function(){
            $form.css("border-color", "#323131");
        }, 3000);
    }
};
$('.twitch-form').ajaxForm(edit_form);

控制台日志返回以下内容:

代码语言:javascript
复制
[Object, constructor: function, init: function, selector: "", jquery: "1.7.2", size: function…]

通常情况下,我会使用$.post,但我需要能够上传这些表格的图片.

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-21 02:50:03

如果查看插件文档(查看success选项),成功方法将表单对象作为第四个参数

成功 要在表单提交后调用的回调函数。如果提供了“成功”回调函数,则在从服务器返回响应后调用它。传递以下参数:1.responseText或responseXML值(取决于dataType选项的值)。2.)( statusText 3.)xhr (如果使用jQuery <1.4,则使用jQuery包装的表单元素)4。jQuery包装的表单元素(如果使用jQuery<1.4,则未定义)

所以

代码语言:javascript
复制
var edit_form = {
    url: 'asdf/asdf',
    dataType: 'json',
    success: function (output, status, xhr, $form) {
        console.log('x',$form, status);
        $form.css("border-color", "green");
        setTimeout(function () {
            $form.css("border-color", "#323131");
        }, 3000);
    },
    error: function (xhr, status, error, $form) {
        console.log($form)
        $form.css("border-color", "red");
        setTimeout(function () {
            $form.css("border-color", "#323131");
        }, 3000);
    }
};
$('.twitch-form').ajaxForm(edit_form);

演示:小提琴

票数 2
EN

Stack Overflow用户

发布于 2015-04-21 02:52:48

根据文档,下面是如何创建一个成功的回调:

代码语言:javascript
复制
var options = {
    success: showResponse
    ...
}

function showResponse(responseText, statusText, xhr, $form)  {
    ...
}

http://malsup.com/jquery/form/#ajaxForm

票数 1
EN

Stack Overflow用户

发布于 2015-04-21 03:04:01

阅读API,在那里提供可用的选项..。尝尝这个

代码语言:javascript
复制
<script> 

    $(document).ready(function() { 
        // bind 'myForm' and provide a simple callback function 
        var options = { 
          target:     '#divToUpdate', 
          url:        'comment.php', 
          success:    function(){ alert("Success ")},

          error:function(){
            alert("Error occurd");
          }

        }; 
        $('#myForm').ajaxForm(options);  





      }); 
    </script> 

       <form id="myForm" action="" method="post"> 
      Name: <input type="text" name="name" /> 
      Comment: <textarea name="comment"></textarea> 
      <input type="submit" value="Submit Comment" /> 
    </form>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29761898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档