我使用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之后仍然会触及后面的代码。
请帮我解决这个问题。
答案 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!');
}
});