【问题标题】:jQuery: Re-enabling disabled input buttons after 'success:' is runjQuery:运行“成功:”后重新启用禁用的输入按钮
【发布时间】:2014-03-05 04:28:06
【问题描述】:

如果满足指定条件,我有以下 jQuery 代码来禁用某些表单按钮。调用 PHP 文件以将用户的输入与数据库查找相匹配。如果输入与查找匹配,则禁用按钮并显示消息 (uinError)。这是 jQuery:

$(function() 
{
  $('input[id="empUIN"]').keyup(function(event) 
  {
      var uin = $('#empUIN').val();

      $.ajax(
      {
          type: 'POST',
          url: 'uinlookup.php',
          data: 
          {
              term: uin
          },
          success: function(data) 
          {

              $('#uinError').html(data);
              $('#class1Buttons :input').attr('disabled', true);
          }
      }); //End ajax         

     event.preventDefault();

    }); 
 }); //End function

如果存在匹配项,则此方法有效,但如果用户提供的输入未触发匹配项(即,如果他在输入内容上退格并键入新数字),我需要重新启用按钮。现在,无论在 empUIN 中输入什么,按钮都保持禁用状态。

【问题讨论】:

  • 您的病情在哪里?在php文件中?不匹配时返回什么?
  • 条件在uinlookup.php中。如果不满足条件(用户输入 == DB 查找),它只会返回 0。

标签: javascript php jquery


【解决方案1】:

你需要使用.prop()

$('#class1Buttons :input').prop('disabled', true); //true = disabled, false = enabled. Not sure what you want

在你的情况下,应该可以:

$('#class1Buttons :input').prop('disabled', data);

【讨论】:

  • 是的,后者正是我要找的。谢谢。
【解决方案2】:
  1. 在 PHP 中返回失败的请求(500 状态示例)。

    header('HTTP/1.1 500 Internal Server Booboo');
    header('Content-Type: application/json; charset=UTF-8');
    die(json_encode(array('error' => true))); // some optional data returned
    
  2. 在你的 jQuery 调用中添加一个错误函数。

    $(function() 
    {
        $('input[id="empUIN"]').keyup(function(event) 
        {
            var uin = $('#empUIN').val();
    
        $.ajax(
        {
            type: 'POST',
            url: 'uinlookup.php',
            data: 
            {
                term: uin
            },
            success: function(data) 
            {
                $('#uinError').html(data);
                $('#class1Buttons :input').attr('disabled', true);
            },
            error: function()
            {
                // enable button
                $('#class1Buttons :input').attr('disabled', false);
            },
        }); //End ajax
    
        event.preventDefault();
        });
    }); //End function
    

您可以阅读有关jQuery.ajax() here 的更多信息。

【讨论】:

    【解决方案3】:

    您可以使用$("#class1Buttons :input").removeAttr('disabled') 删除该属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2014-09-27
      • 2012-09-20
      相关资源
      最近更新 更多