我一直在尝试在AJAX请求成功后启用提交按钮。验证在PHP文件中,其中包含以下代码
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
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 (){}
});
}
我用过成功它的作用是禁用提交按钮,即使数据与请求匹配,按钮仍然处于禁用状态
$("#submit").attr("disabled", true);
并在错误
中关注 $("#submit").attr("disabled", false);
我已经完成了这些问题并尝试了解决方案,但这些解决方案对我来说并不适用。
jQuery: Re-enabling disabled input buttons after 'success:' is run 和
Disable Button while AJAX Request
这是 HTML
<form method="POST">
<label>Check Username:</label>
<input name="username" type="text" id="username" class="demoInputBox" onBlur="checkAvailability()"><span id="user-availability-status"></span><br>
<label>Check Username:</label>
<input name="email" type="text" id="email" class="demoInputBox" onBlur="checkAvailabilitye()"><span id="email-availability-status"></span> <br>
<input type="submit" id="submit">
</form>
提前致谢!
答案 0 :(得分:1)
成功使用:
$("#submit").removeAttr("disabled");
而不是
$("#submit").attr("disabled", false);
要再次启用该按钮,您需要完全删除disabled
属性。
答案 1 :(得分:1)
在成功事件上,您需要将disabled
属性值设置为false。这将重新启用按钮
$( "#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 (){}
});
编辑:根据评论,
看起来你正在尝试根据你正在做的检查来启用/禁用按钮。目前你的php脚本正在返回一个人类可读的字符串。也许你可以改变你的php脚本来返回你的javascript代码可以使用的标志值。
if($user_count>0) {
echo "no";
}else{
echo "available";
}
在您的成功处理程序中检查此值并隐藏/显示按钮/消息
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中显示的标志和消息。您也可以尝试一下。