jquery“return false”在更新面板中无法正常工作

时间:2013-06-21 08:37:32

标签: javascript jquery

我使用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之后仍然会触及后面的代码。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分: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!');
  }
});