【问题标题】:jquery "return false" not working properly inside update paneljquery“return false”在更新面板中无法正常工作
【发布时间】:2013-06-21 08:37:32
【问题描述】:

我使用 jquery 来验证放置在更新面板中的文本框

$("[id*='btnCreate']").live('click', function () 
{
  var regex = new RegExp("^[a-zA-Z0-9]+$");
  if (!regex.test($("[id*='txtbxTemplateName']").val())) 
  {
     alert('hit');

     $("[id*='lblError']").text() = 'Template name is invalid!';

     return false;
  }
});

正在调用点击事件函数,但在返回 false 后它仍然会碰到后面的代码。

请帮帮我。

【问题讨论】:

  • 这个$("[id*='lblError']").text() = 'Template name is invalid!'不对...
  • 什么循环?背后有什么代码?
  • 还确保在使用更新面板时再次重新绑定您的事件 [code] var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_endRequest(function() { // 在这里重新绑定你的 jQuery 事件 });[/code]
  • @Bergi "if block" "运行默认操作并向服务器发送请求"
  • 你用的是什么版本的jquery?

标签: javascript jquery


【解决方案1】:

我认为您的意思是“仍然点击后面的代码”,即没有阻止按钮的默认操作。这是因为代码永远不会到达return false,因为错误:

$("[id*='lblError']").text() = 'Template name is invalid!';
return false;

应该是

$("[id*='lblError']").text('Template name is invalid!');
return false;

但是,您刚刚公开了为什么return false 是阻止事件默认操作的不好方法。这很糟糕,因为错误处理程序中的任何错误都意味着不会阻止默认操作,因为return false 是处理程序中的最后一条语句。

如果你使用event.preventDefault(),各种美好的事情都会发生。其中最主要的是您可以将语句更早地放在处理程序中:

$("[id*='btnCreate']").live('click', function (event) {
  var regex = new RegExp("^[a-zA-Z0-9]+$");
  if (!regex.test($("[id*='txtbxTemplateName']").val())) {
    event.preventDefault();
    alert('hit');
    $("[id*='lblError']").text('Template name is invalid!');
  }
});

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多