jQuery:当ajax请求块元素时

时间:2010-08-18 15:45:27

标签: javascript jquery

所以我在JS中有这个功能,发送一个请求将新的状态消息插入数据库。

function DoStatusInsert(){
  var wrapperId = '#statusResponseNow';
    $.ajax({ 
       type: "POST",
       url: "misc/insertStatus.php",
    data: {
    value: 'y',
    uID : $('#uID').val(),
    message : $('#message').val() 
    },
       success: function(msg){
     $('#message').val("");
     $('#statusResponse').toggle(); 
     $(wrapperId).prepend(msg);
     $(wrapperId).children().first().fadeIn('slow');
        }
     });
}

使用此表格:

<input name="message" type="text" id="message" value="" size="60">  
<input type="hidden" name="uID" id="uID" value="<?php echo $v["id"]; ?>">
<input name="submit" type="submit" id="submit" value="Spara">
<div id="statusResponseNow"></div>

现在我想做一些事情,比如阻止提交按钮或消息字段为“只读”,直到你收到回应/成功,所以你没有机会喜欢按提交很多次,所以它插入了很多..(我知道你可以在数据库中加倍检查后制作一个php)

所以:当你点击提交时,它会将消息字段和/或提交按钮设为只读

我该怎么做?

5 个答案:

答案 0 :(得分:2)

function DoStatusInsert(){
  $('#IdOfYourSaveButton').attr('disabled', 'disabled');
  var wrapperId = '#statusResponseNow';
    $.ajax({ 
       type: "POST",
       url: "misc/insertStatus.php",
       data: {
       value: 'y',
       uID : $('#uID').val(),
       message : $('#message').val(),
       success: function(msg){
          $('#IdOfYourSavebutton').removeAttr('disabled');
          $('#message').val("");
          $('#statusResponse').toggle(); 
          $(wrapperId).prepend(msg);
          $(wrapperId).children().first().fadeIn('slow');
        }
  });
}

启用并禁用该按钮。好又容易:)

答案 1 :(得分:1)

在调用该函数时,设置该按钮的disabled属性,然后将其设置为成功。

function DoStatusInsert(){
 $('#submit').attr("disabled", "true");

 var wrapperId = '#statusResponseNow';
    $.ajax({ 
       type: "POST",
       url: "misc/insertStatus.php",
    data: {
    value: 'y',
    uID : $('#uID').val(),
    message : $('#message').val() 
    },
       success: function(msg){
         $('#message').val("");
         $('#statusResponse').toggle(); 
         $(wrapperId).prepend(msg);
         $(wrapperId).children().first().fadeIn('slow');
         $('#submit').attr("disabled", "false");
        }
     });
}

答案 2 :(得分:0)

我最初的想法是插入

  

$('input [type = submit]',this).attr('disabled','disabled');

在启动ajax调用之前,然后使用ajax请求的success函数删除disabled属性。

答案 3 :(得分:0)

手动切换按钮的禁用状态效果很好,但jQuery有几个辅助事件可以使它更好一些:.ajaxStart().ajaxStop()。您可以在提交按钮上使用这两个处理程序,而不必担心在$ .ajax()请求周围维护该手动代码。

将其与其他初始化代码一起放入,可能在$(document).ready():

$('#submit').ajaxStart(function() { this.disabled = true; });

$('#submit').ajaxStop(function() { this.disabled = false; });

答案 4 :(得分:0)

您可以使用http://jquery.malsup.com/block/中的jQuery BlockUI插件(请参阅http://jquery.malsup.com/block/#elementhttp://jquery.malsup.com/block/#demos上的演示)。

如果您需要屏蔽的所有表单元素的div都标识为formDiv,那么您可以调用

jQuery('#formDiv').block({ message: '<h1>Just a moment...</h1>' });
jQuery.ajax之前

并致电

jQuery('#formDiv').unblock();

作为success的{​​{1}}和error处理程序的第一行。