Jquery "return false"更新面板内工作不正常

jquery "return false" not working properly inside update panel

本文关键字:quot 工作 不正常 false return Jquery 更新      更新时间:2023-09-26

我使用jquery来验证放置在update Panel

中的文本框
$("[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;
  }
});

click事件函数正在被调用,但是在返回false之后,它仍然会击中后面的代码。

请帮帮我。

我想你的意思是"仍然点击后面的代码",按钮的默认动作没有被阻止。这是因为由于错误,代码无法到达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!');
  }
});