我有以下脚本要求用户根据系统设置确认单击按钮。
系统设置存储在代码隐藏中设置的隐藏字段中。
标记:
<asp:HiddenField ID="hfConfirmOnApproval" runat="server" Value="False" />政务司司长:
//Read the confirm on approval setting
hfConfirmOnApproval.Value = Objects.Engine.Settings.Instance.ConfirmOnApproval.ToString();js:
//Get whether to confirm on approval
var _confirmOnApproval = new Boolean($('#hfConfirmOnApproval').val());
if ( _confirmOnApproval ? confirm('Are you sure you want to approve this item?') : true )
{
// do work
}问题是,即使将_confirmOnApproval设置为false,也会显示确认消息框?
我只希望消息框在设置为true时出现。
此时_ConfirmOnApproval为false
解决方案:
js:
var _confirmOnApproval = $('#<%=hfConfirmOnApproval.ClientID %>').val() == "True" ? true : false;
if ( _confirmOnApproval ? confirm('Are you sure you want to approve this item?') : true ) {
//Do work
}发布于 2011-10-28 18:04:05
这是因为您已经使用new Boolean创建了一个布尔对象,而typeof _confirmOnApproval将返回" object ":
var x = new Boolean(false); //Boolean object
if(x) {
console.log("hello"); //This will always execute
}
var y = false; //Literal boolean primitive
if(y) {
console.log("hello"); //This won't
}你可以去掉new Boolean,只比较它的值:
if(_confirmOnApproval == "False")发布于 2011-10-28 18:12:30
对于James的回答,您必须更改现有代码以显式检查布尔条件,如下所示
var _confirmOnApproval = new Boolean($('#hfConfirmOnApproval').val());
if ( _confirmOnApproval === true ? confirm('Are you sure you want to approve this item?') : true )
{
// do work
}发布于 2011-10-28 18:02:42
我认为问题在于它总是有价值的……尝试获取该值的长度,这可能会起作用。
https://stackoverflow.com/questions/7927791
复制相似问题