标签到其包含的div后,无法在textarea内输入?

时间:2012-10-19 19:41:41

标签: jquery

在包含div的(id =“center”)标签后,无法在textarea内输入?

这是代码......

 <div id="north">North</div>
 <div id="west">West</div>
 <div id="center"><textarea></textarea></div> 

脚本

$(document).ready(function() {
    var divs = ["north", "west", "center"];
    var startIndex = 0;
    $(document).keydown(function(e) {
        if (e.which == 9) {
            $("div").css("border", "");
            $("#" + divs[startIndex]).css("border", "4px solid gray");
            startIndex++;
            if (startIndex === divs.length) {
                startIndex = 0;
            }
        }
        return false;
    });
});​

2 个答案:

答案 0 :(得分:1)

你在keydown上返回false - 这会阻止你在textarea中输入

$(document).keydown(function(e) {
    if (e.which == 9) {
        $("div").css("border", "");
        $("#" + divs[startIndex]).css("border", "4px solid gray");
        startIndex++;
        if (startIndex === divs.length) {
            startIndex = 0;
        }
    }
    return false; // <--
});

如果要阻止默认选项卡行为,则应将其移至if (e.which == 9)语句

$(document).keydown(function(e) {
    if (e.which == 9) {
        $("div").css("border", "");
        $("#" + divs[startIndex]).css("border", "4px solid gray");
        startIndex++;
        if (startIndex === divs.length) {
            startIndex = 0;
        }
        return false; // <-- Move it here to prevent tab default behavior
    }        
});

如果你不需要阻止keydown上的任何默认行为,你可以完全删除它

答案 1 :(得分:0)

您可以使用.preventDefault()方法停止默认活动。

$(document).ready(function() {
    var divs = ["north", "west", "center"];
    var startIndex = 0;
    $(document).keydown(function(e) {
        if (e.which == 9) {
            e.preventDefault()
            $("div").css("border", "");
            $("#" + divs[startIndex]).css("border", "4px solid gray");
            startIndex++;
            if (startIndex === divs.length) {
                startIndex = 0;
            }
        }

    });
});