[英]jquery “return false” not working properly inside update panel
我使用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之后仍然会触及后面的代码。
请帮帮我。
我认为你的意思是“仍在按照后面的代码”,没有阻止按钮的默认操作。 这是因为代码永远不会因为错误而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!');
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.