用户名可用性有效,但在不可用的情况下仍然提交表单

时间:2012-06-09 13:13:56

标签: jquery

我有用于检查用户名可用性的表单。表单只有在用户名可用时才提交数据,但表格提交数据在这两种情况下都是代码。

<script type="text/javascript">
$(document).ready(function () //When the dom is ready 
{
  $("#username").change(function () { //if theres a change in the username textbox
    var username = $("#username").val(); //Get the value in the username textbox
    if (username.length > 3) //if the lenght greater than 3 characters
    {
      $("#availability_status").html('<img src="loader.gif" align="absmiddle">&nbsp;Checking availability...');
      //Add a loading image in the span id="availability_status"
      $.ajax({ //Make the Ajax Request
        type: "POST",
        url: "http://localhost/Testtt/wp-content/plugins/Realestate Redirection/check_realitycode_availablity.php",
        //file name
        data: "username=" + username,
        //data
        success: function (server_response) {

          $("#availability_status").ajaxComplete(function (event, request) {

            if (server_response == '0') //if ajax_check_username.php return value "0"
            {
              $("#availability_status").html('<img src="available.png" align="absmiddle"> <font color="Green"> Available </font>  ');
              //add this image to the span with id "availability_status"
            } else if (server_response == '1') //if it returns "1"
            {
              $("#availability_status").html('<img src="not_available.png" align="absmiddle"> <font color="red">Not Available </font>');

            }

          });
        }

      });

    } else {

      $("#availability_status").html('<font color="#cc0000">Username too short</font>');
      //if in case the username is less than or equal 3 characters only 
    }



    return false;
  });

});
</script>

这是检查Avaialablity的JQuery。

这是我的表格

<form action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI']); ?>" name="reality" method="post" id="reality_form" >
            <input type="hidden" name="reality_hidden" value="Y">  
            Website Url:<input type="text" name="website_url" value="" />
            Listing Code: <input type="text" name="rlt_code" id="username" /><span id="availability_status"></span>
            <input type="submit" name="submit" value="submit" id="submit" />
</form>

我试图找到过去几个小时的解决方案,但没有结果。请告诉我需要在if(server_response == '1')条件下添加代码以防止在此案例中提交表单

1 个答案:

答案 0 :(得分:0)

你可以做一些事情,比如最初用类标记<form>

<form class='no-submit' action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI']); ?>" name="reality" method="post" id="reality_form" >

然后你的“改变”处理程序会清除成功:

$("#username").change(function () {
  $('#reality_form').addClass('no-submit');
  // ...
  if (server_response == '0')
    $('#reality_form').removeClass('no-submit');

然后,为表单添加“submit”处理程序:

$('#reality_form').submit() {
  if ($(this).hasClass('no-submit'))
    return false;
});

无论如何,您必须检查服务器上的用户名是否可用,因为您无法100%确定在提交表单时是否已完成AJAX检查。