关于php:在AJAX成功后重新启用提交按钮

Re-Enable Submit button after success in AJAX

在AJAX请求成功后,我一直在尝试启用Submit Button。 验证在PHP文件中,其中包含以下代码

1
2
3
4
5
6
7
8
9
10
11
12
    if(!empty($_POST["username"])) {

        $fetch ="SELECT * FROM student WHERE std_username='" . $_POST["username"] ."'";
        $result = mysqli_query($con, $fetch);
        $user_count = mysqli_num_rows($result);

        if($user_count>0) {
            echo"<span class='status-not-available'> Username Not Available.</span>";
        }else{
            echo"<span class='status-available'> Username Available.</span>";
        }
    }

这是AJAX

1
2
3
4
5
6
7
8
9
10
11
12
13
    function checkAvailability() {
        $("#loaderIcon").show();
        jQuery.ajax({
        url:"check_availability.php",
        data:'username='+$("#username").val(),
        type:"POST",
        success:function(data){
            $("#user-availability-status").html(data);
            $("#loaderIcon").hide();
        },
        error:function (){}
        });
    }

我已经使用了这是成功它做的是禁用提交按钮,即使数据匹配请求,按钮保持禁用状态

1
    $("#submit").attr("disabled", true);

并且错误地跟着

1
    $("#submit").attr("disabled", false);

我已经完成了这些问题并尝试了解决方案,但这些解决方案对我来说并不奏效。

jQuery:运行'success:'后重新启用禁用的输入按钮

在AJAX请求时禁用按钮

这是HTML

1
2
3
4
5
6
7
    <form method="POST">
        <label>Check Username:</label>
        <input name="username" type="text" id="username" class="demoInputBox" onBlur="checkAvailability()"><span id="user-availability-status"></span>    
        <label>Check Username:</label>
        <input name="email" type="text" id="email" class="demoInputBox" onBlur="checkAvailabilitye()"><span id="email-availability-status"></span>
        <input type="submit" id="submit">
    </form>

提前致谢!


在成功事件上,您需要将disabled属性值设置为false。 这将重新启用该按钮

1
2
3
4
5
6
7
8
9
10
11
12
13
$("#submit" ).prop("disabled", true ); //disable when ajax call starts

jQuery.ajax({
    url:"check_availability.php",
    data:'username='+$("#username").val(),
    type:"POST",
    success:function(data){
        $("#submit" ).prop("disabled", false ); //enable it back
        $("#user-availability-status").html(data);
        $("#loaderIcon").hide();
    },
    error:function (){}
    });

编辑:根据评论,

看起来你正在尝试启用/禁用基于你正在做的检查db表的检查按钮。 目前你的php脚本正在返回一个人类可读的字符串。 也许你可以改变你的php脚本来返回你的javascript代码可以使用的标志值。

1
2
3
4
5
if($user_count>0) {
        echo"no";
}else{
        echo"available";
}

在您的成功处理程序中检查此值并隐藏/显示按钮/消息

1
2
3
4
5
6
7
8
9
10
11
12
success:function(data){
        $("#loaderIcon").hide();
        var msg="Not available";

        if(data=="available")
        {
          $("#submit" ).prop("disabled", false ); //enable it back
          msg="Username available";
        }
        $("#user-availability-status").html(msg);

},

我不是一个PHP人。 可能有一种方法可以从PHP页面返回JSON结构,该页面可以返回要在消息div中显示的标志和消息。 你也可以尝试一下。


成功使用:

1
$("#submit").removeAttr("disabled");

代替

1
$("#submit").attr("disabled", false);

要再次启用该按钮,您需要完全删除disabled属性。