有人可以告诉我为什么下面的代码不起作用。我认为我的理论是合理的,我只是缺少一些重要的组成部分。
'#tweet'是分配给表单提交按钮的id。我希望它检查输入是否少于141个字符,如果没有,则提醒用户并且不提交表单。
目前它什么也没做。
$('#tweet').click(function() {
if ($('.message').val().length > 140) {
alert('Your message much be less than or exactly 140 characters');
return false;
}
});
答案 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