JQuery Val () внутри пользовательской функции - PullRequest
0 голосов
/ 24 апреля 2011

У меня есть такая функция в моем внешнем файле javascript (jQuery уже включен в основной html-файл):

function userlogin(){
    $('#ologinbox').html('<div class="input"><div class="input-text"></div><div class="input-field"><img src="css/images/loading.gif" /></div></div>');
    var data = 'username=' + $('#loginusername').val() + '&password=' + $('#loginpassword').val();
    alert(data);
}

и мой html выглядит так:

<div class="input">
<div class="input-text">UserName: <div>
<div class="input-field"><input name="loginusername" id="loginusername" /></div>
</div>
<div class="input">
<div class="input-text">Password: </div>
<div class="input-field"><input name="loginpassword" id="loginpassword" type="password" /></div>
</div>
<div class="input">
<div class="input-text"></div>
<div class="input-field"><input type="submit" value="Send" onclick="userlogin();return false;"/></div>
</div>

когда я нажимаю на кнопку, возвращаемые значения $('#loginusername').val() и $('#loginpassword').val(), отображаемые в окне предупреждения, не определяются.

Интересно, почему это так?

Ответы [ 4 ]

3 голосов
/ 24 апреля 2011
$('#ologinbox').html('<div class="input"><div class="input-text"></div><div class="input-field"><img src="css/images/loading.gif" /></div></div>');
var data = 'username=' + $('#loginusername').val() + '&password=' + $('#loginpassword').val();

Предполагая, что отправленное вами поле для входа является частью div с идентификатором ologinbox, вы просто заменили его содержимое и, следовательно, потеряли элементы #loginusername и #loginpassword.

Заменить содержимое после получения значений:

var data = 'username=' + $('#loginusername').val() + '&password=' + $('#loginpassword').val();
$('#ologinbox').html('<div class="input"><div class="input-text"></div><div class="input-field"><img src="css/images/loading.gif" /></div></div>');

(Обратите внимание, что ваш исходный фрагмент кода не включает окружающий <div id="ologinbox">, который прояснил бы это! что она воспроизводит проблему, в противном случае мы просто догадываемся.)

1 голос
/ 24 апреля 2011

Просто используйте jQuery для обработки события click. Не уверен, почему вы просто не получаете пустую строку. Чтобы исправить это, назначьте атрибут и рассмотрите возможность использования jQuery для обработки события.

<script type='text/javascript'>
    $(document).ready(function(){

        $("#button").click(Foo);

        function Foo(){
           var myVar = $("#someInput").val();
           alert(myVar);
           return false;
        }

    });
</script>


<input id="someInput" value=""/>
<input  type="submit" />
0 голосов
/ 24 апреля 2011

Попробуйте это: http://jsfiddle.net/pvQGs/

<input id="someInput" />
<input id="submitter" type="submit" />

$("#submitter").click(function() {
    var myVar = $('#someInput').val();
    alert(myVar);
    return false;
});
0 голосов
/ 24 апреля 2011

Я пробовал это в jsfiddle, и это работает правильно: http://jsfiddle.net/9gDas/. Вы связали другое событие на кнопке отправки или можете опубликовать еще какой-нибудь код?В jsfiddle я использовал jQuery 1.5.2, какую версию вы используете?

РЕДАКТИРОВАТЬ: Как вы можете видеть здесь: http://jsfiddle.net/r4QG3/ код, который вы предоставили, работает правильно.Я не могу проверить пост Ajax.Что не так в этом коде?

...