Получить текст в поле ввода и проверить, равен ли он его значению атрибута? - PullRequest
1 голос
/ 15 июля 2011

У меня есть это, когда страница загружается

<input class="input" id="accountNameUsernameForm_name" name="profile[real_name]" size="30" type="text" value="George">

Когда нажата кнопка запуска отправки, я хочу проверить, совпадает ли текущий текст в поле ввода с его атрибутом значения?

if ( $('.input').val() != $('.input').attr('value') ) {
        $(this).addClass('formLoading');
}

Однако проблема в том, что val () и attr ('value') всегда одинаковы.Какая функция извлекает текущий текст, который находится на входе прямо сейчас, не глядя на его атрибут value?

спасибо

Кстати.это не работает с text()!

Ответы [ 6 ]

7 голосов
/ 15 июля 2011
// save the default value on page load
var defaultUsername = $('.input').val();

// on submit, compare
if ( $('.input').val() != defaultUsername ) {
        $(this).addClass('formLoading');
}
0 голосов
/ 15 июля 2011

Используйте свойство defaultValue.

$('.input')[0].defaultValue

Свойство defaultValue устанавливает или возвращает значение по умолчанию для текстового поля, указанного в атрибуте значения.

Иногда люди забывают, что jQuery - это просто JavaScript, простые вещи нужно делать простым способом.

0 голосов
/ 15 июля 2011

Имейте трещину в этом:

$('.input').each(function() {
    if($(this).val() != this.defaultValue) {
        $(this).addClass('formLoading');
    }
});
0 голосов
/ 15 июля 2011

Проблема в том, что атрибут значения также обновляется по мере изменения текста. При загрузке страницы вы должны сохранить начальное значение как переменную, а затем проверить это в обратном вызове.

0 голосов
/ 15 июля 2011
$('.input').val() is equal to  $('.input').attr('value') always.

Я предлагаю вам включить скрытое поле или сохранить значение в переменной

См. Пример: http://jsfiddle.net/r3KZu/6/

0 голосов
/ 15 июля 2011

используйте идентификатор ввода вместо input, а затем попробуйте это ..

inputValue = $("#accountNameUsernameForm_name").val()

и затем в вашем обработчике формы попробуйте это ..

inputText =  $("#accountNameUsernameForm_name").attr('value') 

    if(inputValue ! = inputText ){
        $(this).addClass('formLoading');

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