return false在我提交的点击中不起作用

这是我用于我的Html.BeginForm的代码..

$('#PbtnSubmit').click(function() { $('#PricingEditExceptions input[name=PMchk]').each(function() { if ($("#PricingEditExceptions input:checkbox:checked").length > 0) { var checked = $('#PricingEditExceptions input[type=checkbox]:checked'); var PMstrIDs = checked.map(function() { return $(this).val(); }).get().join(','); $('#1_exceptiontypes').attr('value', exceptiontypes) $('#1_PMstrIDs').attr('value', PMstrIDs); } else { alert("Please select atleast one exception"); return false; } }); }); 

在其他blcok我的返回false是不是工作后警报消息也去了我的控制器?

谢谢,这是对的吗?

我试过这样的

  $('#PbtnSubmit').click(function() { $('#PricingEditExceptions input[name=PMchk]').each(function() { if ($("#PricingEditExceptions input:checkbox:checked").length > 0) { var checked = $('#PricingEditExceptions input[type=checkbox]:checked'); var PMstrIDs = checked.map(function() { return $(this).val(); }).get().join(','); $('#1_exceptiontypes').attr('value', exceptiontypes) $('#1_PMstrIDs').attr('value', PMstrIDs); } else { alert("Please select atleast one exception"); } }); return false; }); 

如果我这样做就提交它什么都不做..

谢谢

您想阻止表单在特殊条件下提交吗?

如果是这样,您应该首先避免使用click ,而是使用支持键盘操作的submit事件。 更改要提交的事件后,您可以使用event.preventDefault()来阻止表单提交。

所以你的代码可能看起来像这样(注意:未经测试):

 $('').bind('submit', function(event) { $('#PricingEditExceptions input[name=PMchk]').each(function() { if ($("#PricingEditExceptions input:checkbox:checked").length > 0) { var checked = $('#PricingEditExceptions input[type=checkbox]:checked'); var PMstrIDs = checked.map(function() { return $(this).val(); }).get().join(','); $('#1_exceptiontypes').attr('value', exceptiontypes) $('#1_PMstrIDs').attr('value', PMstrIDs); } else { alert("Please select atleast one exception"); event.preventDefault(); // Stop the submit here! } }); }); 

更多信息在这里: .bind()jQuery API (它在页面的相当远的地方,所以对.bind("submit"进行页内搜索.bind("submit" )。更多信息还有: .submit()和.preventDefault()

请查看: http : //api.jquery.com/event.preventDefault/

你应该做这样的事情:

 $('#PbtnSubmit').click(function(event) { /// code event.preventDefault(); }); 

如果提交处理程序中有错误(未捕获的exception),则最终不会返回false并停止事件传播。 如果您按照其他响应者的建议切换到使用event.preventDefault()方法并且您仍然遇到问题,那么您应该在提交处理程序的开头调用event.preventDefault,以便您知道该页面不会在您有机会调试错误之前提交给您。

有时您必须清除先前的事件绑定,然后绑定事件。

使用,jQuery,这将是类似的

  $("#...").off('click');$("#...").click(function(){..});