Получить функцию jQuery для запуска на HTML Button OnClick - PullRequest
0 голосов
/ 15 августа 2011

У меня есть следующий HTML / JQuery:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Login</title>
<script src="jQuery.js"></script>
<script>
   $(document).ready(function(){                     
      $(function(){
         $("#sb").click(function(e){
            e.preventDefault();
            getmessage = "Yes";
            getmessage = encodeURIComponent(getmessage);//url encodes data
            $.ajax({
               type: "POST",
               url: "get_login.php",
               data: {'getmessage': getmessage},
               dataType: "json",
               success: function(data) {
                  $("#message_ajax").html("<div class='successMessage'>" + data.message +"</div>");
           }
           });
        });
      });
    });
</script>
</head>

<body>
<h1>Login</h1>
<p>Please enter your e-mail and password</p>
<form name = "loginform" action = "http://dev.speechlink.co.uk/David/get_login.php" method = "post">
<p>E-mail<input name = "username" type="text" size="25"/><label id ="emailStatus"></label></p>

<p>Password<input name = "password" type="text" size="25"/><label id ="passwordStatus"></label></p>

<p><input type="hidden" name="usertype" value = "SupportStaff" /></p>
<p>><input type ="button" id = "sb"value="Create Account"/></p>

</form>
<div id = "message_ajax"></div>
</body>
</html>

Я не могу заставить обработчик событий (в пределах jQuery) срабатывать при нажатии пользователем кнопки «Создать учетную запись» ...

Ответы [ 2 ]

3 голосов
/ 15 августа 2011

Я вижу три вопроса:

  1. Вы вызываете ready дважды (когда вы передаете функцию в $(), это похоже на передачу функции в $(document).ready()). Это в значительной степени безвредно, но совершенно необязательно.

  2. Ваш атрибут для id на кнопке утрамбован относительно следующего; возможно, браузер его игнорирует:

    <input type ="button" id = "sb"value="Create Account"/>
    <!--                  ^^^^^^^^^ -->
    

    (Хорошо иметь пробелы вокруг =, если хотите, но объединение "sb" в value может не сработать.)

  3. (возможно, не по теме, возможно, нет): вы (из приведенного кода) становитесь жертвой Ужас неявных глобалов . Вам, вероятно, следует объявить переменную getmessage.

Итак:

<script>
   $(document).ready(function(){           
     // Removed the unnecessary `$(function() { ...` here and the matching closing bits at the end
     $("#sb").click(function(e){
        e.preventDefault();
        var getmessage = "Yes"; // <== Added `var`
        getmessage = encodeURIComponent(getmessage);//url encodes data
        $.ajax({
           type: "POST",
           url: "get_login.php",
           data: {'getmessage': getmessage},
           dataType: "json",
           success: function(data) {
              $("#message_ajax").html("<div class='successMessage'>" + data.message +"</div>");
       }
       });
    });
    });
</script>

и

<input type="button" id="sb" value="Create Account"/>
2 голосов
/ 15 августа 2011

Вы HTML не хорошо:

<p>><input type ="button" id = "sb" value="Create Account"/></p>

должно быть

<p><input type ="button" id="sb" value="Create Account"/></p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...