为啥即使条件为假,这个“IF”也总是执行?
Posted
技术标签:
【中文标题】为啥即使条件为假,这个“IF”也总是执行?【英文标题】:Why does this "IF" always execute even the condition is false?为什么即使条件为假,这个“IF”也总是执行? 【发布时间】:2015-03-05 20:57:24 【问题描述】:这是我的代码:
$('.btn-back').off('click').on('click', function (event)
var valid = carInfo.validate();
if (valid)
event.preventDefault();
);
无论valid
是什么值,语句event.preventDefault()
总是执行。
当我将代码更改为
$('.btn-back').off('click').on('click', function (event)
var valid = carInfo.validate();
if (valid)
event.preventDefault();
else
);
它按照应有的方式运行。也许这与自动分号插入 (ASI) 有关。
【问题讨论】:
那么validate
函数是什么?
boolean in an if statement 的可能重复项
validate()
返回什么?它可能正在研究“真实”的价值。
如果valid
不正确,它将不会执行,很有可能您的函数没有返回您期望的结果
您是否调试过代码或在 preventDefault() 上设置了断点?我不敢相信第一个代码块没有去 preventDefault() 而第二个代码块去它
【参考方案1】:
使用jQuery Validation
插件方式:
carInfo.validate()
将返回 Validator
object。
所以valid
变量总是true
。使用docs中的valid
方法:
$('.btn-back').off('click').on('click', function (event)
carInfo.validate();
if (carInfo.valid())
event.preventDefault();
);
【讨论】:
您需要拨打validate()
吗?你不只需要if (carInfo.valid())
吗?
validate()
需要在使用此方法检查表单之前在表单上调用。来自docs :)
好的,只是确保 :-)
As per OP's comment, "validate()
is my own method",这个问题不是关于 jQuery Validate 插件的问题。
我添加了一个使用 jQuery validate 的建议 :)以上是关于为啥即使条件为假,这个“IF”也总是执行?的主要内容,如果未能解决你的问题,请参考以下文章