Jquery - почему это не работает? - PullRequest
0 голосов
/ 11 февраля 2010

Может кто-нибудь сказать мне, почему код ниже не работает. Я думаю, что моя теория обоснована, я просто упускаю какой-то жизненно важный компонент.

'# твит' - это идентификатор, назначенный кнопке отправки формы. Я хочу, чтобы он проверял, содержит ли ввод менее 141 символа, в противном случае предупреждает пользователя и не отправляет форму.

В настоящее время это ничего не делает.

    $('#tweet').click(function() {
   if ($('.message').val().length > 140) {
    alert('Your message much be less than or exactly 140 characters');
    return false;
   }
  });

Ответы [ 6 ]

2 голосов
/ 11 февраля 2010

Возможно, что ваш .message поражает больше элементов!

$(document).ready(function() {
    $('#tweet').click(function(e) {
        var success = true;
        $('.message').each(function() {
            if ($(this).val().length > 140) {
                alert('Your message much be less than or exactly 140 characters');
                success = false;
            }
        });
        if (!succeess) {
            e.preventDefault();
        }
        return success;
    });
});
2 голосов
/ 11 февраля 2010

Введите приведенный выше код, как этот

<script type="text/javascript">
$(function(){
  $('#tweet').click(function() {
    if ($('.message').val().length > 140) {
     alert('Your message much be less than or exactly 140 characters');
     return false;
    }
  });
});
</script>

в разделе вашего html после включения файла библиотеки jQuery. Поскольку обработчики событий присоединяются после того, как dom готов.

1 голос
/ 11 февраля 2010

Вы должны прикрепить свое поведение к событию отправки формы:

 $('form').bind('submit',function() {
   if ($('.message').val().length > 140) {
    alert('Your message much be less than or exactly 140 characters');
    return false;
   }
  });
0 голосов
/ 11 февраля 2010

Для полноты, если вы предотвращаете дефолт, вы, вероятно, должны пройти следующее дополнительное расстояние:

function stopEvent(event) {
    event.preventDefault();
    event.stopPropagation();
    if ($.browser.msie) {
        event.originalEvent.keyCode = 0;
        event.originalEvent.cancelBubble = true;
        event.originalEvent.returnValue = false;
    }
}

В моем ответе на следующий вопрос есть информация об этом: JQuery отправка формы. Остановка обновления страницы работает только в новейших браузерах

0 голосов
/ 11 февраля 2010

Вы, вероятно, хотите запретить действие по умолчанию вместо возврата false

$('#tweet').click(function( e ) {
    if ($('.message').val().length > 140) {
        alert('Your message much be less than or exactly 140 characters');
        e.preventDefault();
    }
});
0 голосов
/ 11 февраля 2010

Идентификатор должен быть tweet, а не #tweet

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