0

我使用 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;
  }
});

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

请帮助我。

4

1 回答 1

2

我认为您的意思是“仍然点击后面的代码”,即没有阻止按钮的默认操作。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!');
  }
});
于 2013-06-21T08:39:58.553 回答