Jquery 为什么创建输入字段时输入字段不为空?

Jquery 为什么创建输入字段时输入字段不为空?,jquery,input,keydown,Jquery,Input,Keydown,到目前为止,我总是在Stackoverflow找到一个答案,来解答我在编写Javascript/Jquery时遇到的问题,但现在我已经走到了死胡同。 简单的html和脚本,我在其中创建了一个输入字段。 这个输入字段只在我按下“s”键时才会显示,但无论我怎么做,“s”也会显示在输入字段中,这是不应该的。 只有在我明确清除了inputfield之后,该字段才是空的,但随后焦点就丢失了 这里是我使用的一个例子(当然它是一个更大的程序的一部分),你可以看到我试图让它工作。感谢您的帮助。谢谢 <!D

到目前为止,我总是在Stackoverflow找到一个答案,来解答我在编写Javascript/Jquery时遇到的问题,但现在我已经走到了死胡同。 简单的html和脚本,我在其中创建了一个输入字段。 这个输入字段只在我按下“s”键时才会显示,但无论我怎么做,“s”也会显示在输入字段中,这是不应该的。 只有在我明确清除了inputfield之后,该字段才是空的,但随后焦点就丢失了

这里是我使用的一个例子(当然它是一个更大的程序的一部分),你可以看到我试图让它工作。感谢您的帮助。谢谢

<!DOCTYPE html>
<html>
    <head>
        <title>Textbox-Test</title>
         <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=utf-8">
        <script type="text/javascript" language="javascript" src="jquery-1.9.1.min.js"></script>

        <script>
        function showSearchBox() {
            output = 'Please enter your search-word here: <input type="text" value="" id="searchBox"/>';
            $('#inputArea').html(output);

            //$('#searchBox').focus();
            //$('#searchBox').html("");
            //$('#searchBox').val("");          
            $('#searchBox').clear();        // clears the box (all the others don't), but only if .focus is after it, plus there there is no focus
            //$('#searchBox').empty();      
            //$('#searchBox').reset();
            $('#searchBox').focus();
        };
        function HandleKeyDown(e) {
            if (e.keyCode == 83) {                      // s  show Search-box.
                showSearchBox();
            }
        };
        $(document).ready(function () { 
            $(document).keydown(HandleKeyDown);
        });

        </script>

    </head>
    <body>
    <h2>Please press the 's' key to open the Search-Textbox.</h2>
        <div id="inputArea"></div>
    </body>
</html>

文本框测试
函数showSearchBox(){
输出='请在此处输入搜索词:';
$('#inputArea').html(输出);
//$(“#搜索框”).focus();
//$(“#搜索框”).html(“”);
//$(“#搜索框”).val(“”);
$(“#searchBox”).clear();//清除该框(所有其他框都不清除),但仅当.focus在它之后,并且没有焦点时
//$(“#搜索框”).empty();
//$(“#搜索框”).reset();
$(“#搜索框”).focus();
};
功能HandleKeyDown(e){
如果(e.keyCode==83){//s显示搜索框。
showSearchBox();
}
};
$(文档).ready(函数(){
$(文档).keydown(HandleKeyDown);
});
请按“s”键打开搜索文本框。

在我的笔记本电脑macbook pro中,s键的键码是115。您认为应该在您的案例中找到它,然后将按键事件用作:

$(文档).ready(函数(){
var标志=真;
$(文档)。按键(功能(e){
如果(标志==真){
警报(例如,which)
如果(e.which=='115'{
flag=false
$('#inputArea').html('')
$('#searchbox').focus(function(){});
}
}
});
});

请按“s”键打开搜索文本框。

在我的笔记本电脑macbook pro中,s键的键码是115。您认为应该在您的案例中找到它,然后将按键事件用作:

$(文档).ready(函数(){
var标志=真;
$(文档)。按键(功能(e){
如果(标志==真){
警报(例如,which)
如果(e.which=='115'{
flag=false
$('#inputArea').html('')
$('#searchbox').focus(function(){});
}
}
});
});

请按“s”键打开搜索文本框。

因为您将向下键委托给文档,所以在将输入附加到div之后,也会从该输入字段接收向下键

选中event.target.id,以便如果您不在输入字段中,则只能添加搜索输入框

函数showSearchBox(){
输出='请在此处输入搜索词:';
$('#inputArea').append(output);//使用append代替html
$(“#搜索框”).focus();
};
功能HandleKeyDown(e){
//如果e.target.id是输入字段,则不执行任何操作
如果(e.keyCode==83&&e.target.id!='searchBox'){
e、 preventDefault();//不要接受s字符,因为您正在创建一个新的文本框
showSearchBox();
}
};
$(函数(){
$(文档).keydown(HandleKeyDown);
});

请按“s”键打开搜索文本框。

因为您将向下键委托给文档,所以在将输入附加到div之后,也会从该输入字段接收向下键

选中event.target.id,以便如果您不在输入字段中,则只能添加搜索输入框

函数showSearchBox(){
输出='请在此处输入搜索词:';
$('#inputArea').append(output);//使用append代替html
$(“#搜索框”).focus();
};
功能HandleKeyDown(e){
//如果e.target.id是输入字段,则不执行任何操作
如果(e.keyCode==83&&e.target.id!='searchBox'){
e、 preventDefault();//不要接受s字符,因为您正在创建一个新的文本框
showSearchBox();
}
};
$(函数(){
$(文档).keydown(HandleKeyDown);
});

请按“s”键打开搜索文本框。

使用
keyup
事件而不是
keydown
可能会有帮助谢谢你,这就完成了工作,但是因为我使用keydown作为其他几个键,所以我选择了gaemaf的解决方案(见下文)。使用
keyup
事件而不是
keydown
可能会有帮助谢谢你,这就完成了工作,但是因为我对其他几个键使用了keydown,所以我选择了gaemaf的解决方案(见下文)。谢谢!当我的项目准备就绪时,我确实需要一个有Mac电脑的人来确定所有的按键是否都能正常工作,因为在Windows上,按键s的按键代码肯定是83。谢谢。很乐意帮忙!:)非常感谢。当我的项目准备就绪时,我确实需要一个有Mac电脑的人来确定所有的按键是否都能正常工作,因为在Windows上,按键s的按键代码肯定是83。谢谢。很乐意帮忙!:)啊,谢谢你,你“睁开了我的眼睛”,e;这就是我实施的解决方案!再次感谢。啊,谢谢你,你“睁开了我的眼睛”,e;这就是我实施的解决方案!再次感谢。