2010-04-24 5 views
37

Код, приведенный ниже, предназначен для включения кнопки отправки после нажатия пользователем в поле textarea. Он работает, но я также пытаюсь сделать так, чтобы он был включен только в том случае, если в поле есть хотя бы один символ. Я попробовал обернуть его в:jquery - проверить длину поля ввода?

if ($(this).val().length > 1) 
{ 

} 

Но, похоже, что это не сработало ... Любые идеи?

$("#fbss").focus(function() { 
    $(this).select(); 
    if ($(this).val() == "Default text") { 
     $(this).val(""); 
     $("input[id=fbss-submit]").removeClass(); 
     $("input[id=fbss-submit]").attr('disabled', false); 
     $("input[id= fbss-submit]").attr('class', '.enableSubmit'); 
     if ($('.charsRemaining')) { 
      $('.charsRemaining').remove(); 
      $("textarea[id=fbss]").maxlength({ 
       maxCharacters: 190, 
       status: true, 
       statusClass: 'charsRemaining', 
       statusText: 'characters left', 
       notificationClass: 'notification', 
       showAlert: false, 
       alertText: 'You have exceeded the maximum amount of characters', 
       slider: false 
      }); 

     } 
    } 
}); 
+1

> 1 означает, что больше чем 1. Если вы хотите, по крайней мере 1, вы должны использовать> = Кроме того, почему вы используете такой странный синтаксис селектора для выбора на основе ID ? Почему бы не использовать синтаксис $ ('# ID')? –

+0

Я пришел сюда, ища длину значения jquery и подумал, что стоит отметить, что вам больше не нужно прибегать к настройке значения, чтобы получить текст по умолчанию, атрибут placeholder теперь выполняет эту работу (html5), значение означает, что вы не можете просто проверить значение! == 0. – Chris

ответ

82

Это не работает, потому что, судя по остальному коду, начальное значение ввода текста является «Текст по умолчанию» - это больше, чем один символ, и поэтому ваше if условия всегда истинно ,

Самый простой способ заставить его работать, как мне кажется, является учет для этого случая:

var value = $(this).val(); 
    if (value.length > 0 && value != "Default text") ... 
+4

value.length> 0 – Ben

+1

Да, вы правы. Исправил ответ. –

19

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

Что-то вроде:

$("#fbss").keypress(function() { 
    if($(this).val().length > 1) { 
     // Enable submit button 
    } else { 
     // Disable submit button 
    } 
}); 
Смежные вопросы