Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 即使已禁用,也可以单击按钮_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 即使已禁用,也可以单击按钮

Javascript 即使已禁用,也可以单击按钮,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我有下面的代码来禁用按钮,它被禁用了。当我将鼠标移到上方时,它会显示交叉圆图标,所以一切都很好。然而,问题是,当我在幕后单击时,它会调用单击操作,或者在单击未禁用时我们希望看到的东西 我浏览了网络,没有找到任何解决方案,除了从attr改为prop。我现在要这样做,看看,但不幸的是,它在Deb中运行良好,而不是在UAT中 需要帮忙吗 $("#IsMarriedlbl").attr("disabled", true); $("#IsSinglelbl").attr("disabled", true)

我有下面的代码来禁用按钮,它被禁用了。当我将鼠标移到上方时,它会显示交叉圆图标,所以一切都很好。然而,问题是,当我在幕后单击时,它会调用单击操作,或者在单击未禁用时我们希望看到的东西

我浏览了网络,没有找到任何解决方案,除了从attr改为prop。我现在要这样做,看看,但不幸的是,它在Deb中运行良好,而不是在UAT中

需要帮忙吗

$("#IsMarriedlbl").attr("disabled", true);
$("#IsSinglelbl").attr("disabled", true);
$("#IsWidowedlbl").attr("disabled", true);
$("#Divorcedlbl").attr("disabled", true);

我不知道为什么,但是IE不能阻止事件在你点击一个禁用的提交按钮时冒泡,所以你也必须在点击事件中处理它。-有点像噩梦

如果在单击事件中返回false,则会阻止代码运行,但仍会对用户产生禁用效果

$('#yourClickEvent').click(function( event ) {
    var $isDisabled  = $(event.target);
    if( $isDisabled.is(':submit:disabled') ) {
        return false;
    }
});

我用的是我以前见过的答案:

老路1.7之前:

新方式1.7+:


我不知道为什么:但在这里,codepen可以很好地工作:

$document.readyfunction{ $button.attrdisabled,true; $button.onclick,函数{ 控制台。点击日志!; }; }; 身体{ 背景色:52DD83; 溢出:隐藏; } 钮扣{ 文本对齐:居中; } 按钮
如果要禁用人工单击和编程生成的单击,则需要执行以下操作:

$("#IsMarriedlbl")
    .prop('disabled', 'disabled')  // Sets 'disabled' property
    .prop('onclick', null)         // Removes 'onclick' property if found
    .off('click');                 // Removes other events if found
演示 $button.onclick,函数{ 警报点击!; }; $Ismarriebl .prop'disabled'、'disabled'//设置'disabled'属性 .prop'onclick',null//如果找到,则删除'onclick'属性 .关闭“单击”;//如果找到,则删除其他事件 $IsMarriedlbl.click; $IsMarriedlbl.click; $IsMarriedlbl.click;
Married你能发布一些html和点击事件的代码吗?@AshkanMobayenKhiabani:你对此感兴趣吗?我认为需要在这里进行更正。你不必担心内部逻辑,只需要担心触发它的逻辑。我想要一些选项,如返回false,或停止即时复制等?糟糕的是,它在Dev中工作得非常好,所以我不想改变这个。我的问题是为什么在其他环境中它不起作用。嗯,可能是单击了被触发的禁用按钮的父元素,如果没有看到code@AshkanMobayenKhiabani:谢谢,但恐怕我不知道它在哪里,这是一个很麻烦的解决办法可能与此无关,但是您应该知道.attr和.prop-disabled之间的区别-disabled是元素的属性,通过使用属性disabled或disabled=disabled来控制;因此,当以编程方式设置它时,使用.prop'disabled',true更为正确。在某些情况下,在生成DOM并对其进行解析后更改属性不会产生任何效果,但更改属性会产生效果。但是我现在记不起一个例子了,你不能从stackoverflow自己那里窃取另一个问题的答案,我真的不明白它是如何窃取的,当我把我认为是这个问题的答案与原始答案联系在一起并将其归功于原始答案时。我不是说这是我的。你应该正常地用它来评论。。不要再回答了。哦,对不起,但是StackOverflow要求我有50个声誉来评论一个原始问题。因为我已经16岁了,我不能做你要我做的事。谢谢你的建议。@MikeS:实际上使用prop只会破坏我的代码,并造成比现在更多的问题,lolI在其他问题中看到了同上的语句和代码,但没有帮助。它将返回false,并且不允许用户继续。为什么这没有帮助。。disabled不会停止IE上的点击事件,所以你必须这样做,在IE的开发者中测试它,它不会工作。嘿,它甚至在Chrome中:在Chrome开发者中工作还没有检查IE开发者lol。。。但是测试人员在跟踪我,该死的,这个愚蠢的错误在UAT中不起作用,但在Dev:和Local:中效果很好:没有线索,相同的代码。禁用只会禁用用户集成,没有功能抱歉这么说,但是您必须进行检查,并在单击事件中返回false。添加到onclick事件不会花费很长时间。抱歉,它不适用于我,与我的代码没有任何区别。
$('...').prop('onclick',null).off('click');
$("#IsMarriedlbl")
    .prop('disabled', 'disabled')  // Sets 'disabled' property
    .prop('onclick', null)         // Removes 'onclick' property if found
    .off('click');                 // Removes other events if found