Jquery - 为什么这不起作用?

时间:2010-02-11 09:44:20

标签: javascript jquery validation

有人可以告诉我为什么下面的代码不起作用。我认为我的理论是合理的,我只是缺少一些重要的组成部分。

'#tweet'是分配给表单提交按钮的id。我希望它检查输入是否少于141个字符,如果没有,则提醒用户并且不提交表单。

目前它什么也没做。

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

6 个答案:

答案 0 :(得分:2)

将上面的代码放在这个

<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>
在包含jQuery库文件之后的html部分中的

。在dom准备就绪后附加事件处理程序。

答案 1 :(得分:2)

您的.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 :(得分:1)

您应该将您的行为附加到表单提交事件:

 $('form').bind('submit',function() {
   if ($('.message').val().length > 140) {
    alert('Your message much be less than or exactly 140 characters');
    return false;
   }
  });

答案 3 :(得分:0)

您可能希望阻止默认操作,而不是返回false

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

答案 4 :(得分:0)

为了完整性,如果你的防止违约,你应该去以下额外的距离:

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

在我对以下问题的回答中有关于此的信息: jQuery form submission. Stopping page refresh only works in newest browsers

答案 5 :(得分:-3)

ID应为tweet而不是#tweet