PHP表单提交和AJAX验证

时间:2013-09-15 04:05:04

标签: javascript php ajax forms

编辑: document.getElementById('submit').disabled='disabled';如果我把它替换为return false;就可以了,但由于某些原因,它还会在未使用用户名时禁用该按钮。


以下是检查用户名可用性的基本脚本。

如果已经使用了用户名,我如何阻止提交表单

理想情况下,我想弹出一个JS警告框。

我试图将此添加到JS但不起作用:

document.getElementById('submit').disabled

此外,我尝试将onclick="return validate();"添加到表单本身,但也没有运气:表单仍然可以提交。

HTML

<form id="edit" action="edit.php" method="post">
   <fieldset>       
     <label>Username</label><input type="text" class="input" name="username"      
     id="username"/><span id="status"></span> 
    <button type="submit" id="submit" value="add">Save</button>
   </fielset>
</form>

脚本

<script type="text/javascript">
$(document).ready(function() {
    $("#username").change(function() {
        var username = $("#username").val();
        var msgbox = $("#status");

        if (username.length >= 4) {
            $("#status").html('<img src="images/gif/ajax-loading.gif">');

            $.ajax({
                type: "POST",
                url: "ajax_check.php",
                data: "username=" + username,
                success: function(msg) {

                    if (msg == 'OK') {

                         msgbox.html('<img src="/images/yes.png">');
                         return true;

                    } else {
                        msgbox.html(msg);            
                        return false;

                    }
                }
            });
        } else {

            $("#status").html('<img src="/images/no.png">too long!');
            return false;
        }
        return false;
    });
});

edit.phpajax_check.php只包含一些SQL查询。

此外,有些用户在浏览器上禁用了JavaScript,我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:1)

您可以将属性添加到表单元素

onsubmit="return validate();"

如果JavaScript被禁用,那么你无能为力。这就是为什么必须在服务器端应用数据验证/实例化。

答案 1 :(得分:1)

这应该可以解决问题。成功时重新启用按钮并在失败时将其禁用。

   if (msg == 'OK') {                       
            msgbox.html('<img src="/images/yes.png">');
            document.getElementById('submit').disabled = false;  //enable submit

      } else {                    
            msgbox.html(msg);            
            document.getElementById('submit').disabled = 'disabled';  //disable submit
      }