为什么此输入始终保持可点击状态?

时间:2013-03-05 12:52:24

标签: javascript jquery html propagation

基本上我希望外部div占用所有事件,因此div中的输入和其他任何内容都不可点击:

<div id="div1">
    <div id="div2">
        <label>Input 1</label>
        <input type="text" id="input1" />
    </div>
</div>

$(document).ready(function() {
    $(document).on('click', '#input1', function(e){
        e.preventDefault();
    };
});

以下是非工作示例http://jsfiddle.net/KFWmk/3/

任何帮助表示赞赏:)

4 个答案:

答案 0 :(得分:9)

在较新的jQuery(1.6 +)中:

$('div input').prop("readonly", true);

这为div中的所有输入设置HTML readonly属性为true。

请注意,在jQuery中已弃用.attr()来设置属性(布尔值为on或off的属性)。

答案 1 :(得分:2)

首先,因为你没有包含jQuery库 第二个因为你有一个类型o 第三,因为焦点是在click事件之前发出的。 (Prove

如果您想使输入字段不可编辑,可以使用:

$("input").prop("readonly", true);

或者只是在html中创建输入字段时:

<input readonly type="number">

如果您想要防止对输入字段的关注,可以使用:

$("input").on("focus", function() {
    $(this).blur();
}); 

答案 2 :(得分:0)

$('div input').attr("readonly", "readonly");

您可以将div中的所有输入字段设为只读。

答案 3 :(得分:0)

您可以尝试这样

$(document).ready(function() {
    $('div input').prop("readonly", true);
});