2012-07-16 3 views
2

Я создаю форму регистрации AJAX для своего сайта; однако я столкнулся с чем-то, что, по моему мнению, является ошибкой в ​​jQuery.

Пример кода:

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Log In</title> 
    </head> 
    <body> 
     <div class="errors"></div> 
     <input type="username" placeholder="username"> 
     <input type="password" placeholder="password"> 
     <input type="submit" value="Log In"> 
    </body> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> 
    <script> 
     $('input[type=submit]').click(function(){ 
      $(".errors").load(window.location.protocol + "//" + window.location.host + "?username=" + $("input[type=username]").val() + "&password=" + $("input[type=password]").val()); 
      return false; 
    }); 
    </script> 
</html> 

Я знаю то, что это не проблема на стороне сервера. Возвращаемое значение для $("input[type=username]").val() равно undefined, а возвращаемое значение $("input[type=password]").val() - это значение ввода. Спасибо всем заранее! :)

+2

Прежде чем объявить "ошибка", убедитесь, что ваш тест действителен первым. [HTML Validator] (http://validator.w3.org/) покажет вам вашу ошибку. –

+0

Люди думают, что сбор плагинов из Интернета делает их jQuery * ninjas * – Alexander

ответ

9

username недействительный type значение атрибута. Я предполагаю, что вы хотели text, и это то, что браузер по умолчанию, когда он встречает непризнанный тип. Поэтому, когда ваш код работает, input фактически имеет тип text, а не username.

Для получения полного списка значений атрибутов type см. specification.


Сторона примечания - обновление вашей версии jQuery до версии 1.3.2 или (предпочтительно) выше решит эту проблему. Я бы отошел от древнего 1.2.6, который вы сейчас используете как можно скорее!

См. working version (jQuery 1.7.2) here. Измените включенную версию jQuery до 1.2.6, и она будет регистрировать undefined, как вы говорите в своем вопросе.

+0

yes, 'username' следует использовать как значение атрибута' name'. –

+0

Хорошо, спасибо. CSS поддерживает тип имени пользователя. Дурак я. –

+0

@PatrickMurray - Смотрите мое обновление. Если вы обновите jQuery до более новой версии, он будет работать так, как вы ожидаете. Я все же настоятельно рекомендую, чтобы вы не использовали 'username' как значение' type'. –

4

"username" не является допустимым type, это будет рассматриваться как "text"

Использование name="username" и $("input[name=username]") вместо

Here's a list of valid types

Смежные вопросы