Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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_Html - Fatal编程技术网

Javascript 停止元素的所有事件

Javascript 停止元素的所有事件,javascript,jquery,html,Javascript,Jquery,Html,我想停止输入、选择、文本区域的所有事件。若点击或聚焦输入框时发生事件,则该事件不应工作。当我点击输入框时,不应该触发任何事件。不应关注输入或文本区域。如果我单击select,那么它将不会打开(不要禁用它,请使用preventDefault()),我还需要一个按钮,单击该按钮时,我们停止的事件将再次工作 首先: 第二: 1. 2. 3. 第三: 大家好 第四: $(.test1”)。在(“单击”上,函数(e){ 警报(“点击测试1”); }); $(“.test2”)。在(“单击”,函数(e

我想停止输入、选择、文本区域的所有事件。若点击或聚焦输入框时发生事件,则该事件不应工作。当我点击输入框时,不应该触发任何事件。不应关注输入或文本区域。如果我单击select,那么它将不会打开(不要禁用它,请使用preventDefault()),我还需要一个按钮,单击该按钮时,我们停止的事件将再次工作

首先:


第二: 1. 2. 3.

第三: 大家好

第四:
$(.test1”)。在(“单击”上,函数(e){
警报(“点击测试1”);
});
$(“.test2”)。在(“单击”,函数(e){
警报(“单击test2”);
});
$(“.test3”)。在(“单击”,函数(e){
警报(“单击test3”);
});
$(“.test4”)。在(“单击”,函数(e){
警报(“单击test4”);
});
$(“输入”)。在(“单击”)上,函数(e){
警报(“点击输入”);
});
$(“输入”).bind(“单击”),函数(e){
警报(“点击输入(绑定)”;
});
$(“输入”).hover(函数(e){
警报(“悬停在输入端”);
});
$(“输入”)。关于(“焦点”,函数(e){
警报(“关注输入”);
});

你可以用这样的东西

var enabled = false;
$('input, textarea, select ').on('mousedown click focus', function(e) {
    if(!enabled){
        e.preventDefault();
        this.blur();
        window.focus();
    }
});
$("#enable-btn").on("click", function(e){
    enabled = !enabled;
    var text = $(this).val();
    $(this).val(text == "Enable" ? "Disable" : "Enable");
});


评论后编辑

要防止附加到事件的其他功能,需要检查状态是否已禁用。 这里是更新后的示例

HTML

<input type="text" id="id1" />
<select>
    <option val="0">Val 0</option>
    <option val="1">Val 1</option>
    <option val="2">Val 2</option>
</select>
 <textarea rows="4" cols="50"></textarea> 
<input type="button" id="enable-btn" value="Enable" />
<div id="log"></div> 

为什么不想禁用这些元素?你所描述的行为正是它所做的<代码>$(元素).prop('disabled',true)如果您担心的话,您可以在表单提交之前重新启用元素。可能的重复项,但是如果我在输入元素或任何其他元素上单击使用,那么它也应该不起作用$('input')。关于('click',函数(e){alert('hi');});
var enabled = false;
$('input, textarea, select ').on('mousedown click focus', function(e) {
    if(!enabled){
        e.preventDefault();
        this.blur();
        window.focus();
    }
});
$("#enable-btn").on("click", function(e){
    enabled = !enabled;
    var text = $(this).val();
    $(this).val(text == "Enable" ? "Disable" : "Enable");
});

$("select").on("click",function(e){
    if (!enabled){       
        e.preventDefault();
        return false;
    }
    $("#log").html("Select clicked");    
});
$("input").on("click",function(e){
    if (!enabled){       
        e.preventDefault();
        return false;
    }
    $("#log").html("Input clicked");    
});