首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有人能看到这个js / jQuery有什么问题吗?

有人能看到这个js / jQuery有什么问题吗?
EN

Stack Overflow用户
提问于 2011-10-28 18:00:22
回答 5查看 40关注 0票数 1

我有以下脚本要求用户根据系统设置确认单击按钮。

系统设置存储在代码隐藏中设置的隐藏字段中。

标记:

代码语言:javascript
复制
<asp:HiddenField ID="hfConfirmOnApproval" runat="server" Value="False" />

政务司司长:

代码语言:javascript
复制
//Read the confirm on approval setting
hfConfirmOnApproval.Value = Objects.Engine.Settings.Instance.ConfirmOnApproval.ToString();

js:

代码语言:javascript
复制
//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:

代码语言:javascript
复制
var _confirmOnApproval = $('#<%=hfConfirmOnApproval.ClientID %>').val() == "True" ? true : false;

if ( _confirmOnApproval  ? confirm('Are you sure you want to approve this item?') : true ) {
//Do work
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-28 18:04:05

这是因为您已经使用new Boolean创建了一个布尔对象,而typeof _confirmOnApproval将返回" object ":

代码语言:javascript
复制
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,只比较它的值:

代码语言:javascript
复制
if(_confirmOnApproval == "False")
票数 2
EN

Stack Overflow用户

发布于 2011-10-28 18:12:30

对于James的回答,您必须更改现有代码以显式检查布尔条件,如下所示

代码语言:javascript
复制
var _confirmOnApproval = new Boolean($('#hfConfirmOnApproval').val());
if ( _confirmOnApproval === true ? confirm('Are you sure you want to approve this item?') : true ) 
{
    // do work
}
票数 1
EN

Stack Overflow用户

发布于 2011-10-28 18:02:42

我认为问题在于它总是有价值的……尝试获取该值的长度,这可能会起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7927791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档