Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.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 引用I';当我按回车键时,我在_Javascript_Jquery_This_Keycode - Fatal编程技术网

Javascript 引用I';当我按回车键时,我在

Javascript 引用I';当我按回车键时,我在,javascript,jquery,this,keycode,Javascript,Jquery,This,Keycode,Javascript/jQuery(不能按我所希望的方式工作): 我不想按名称引用文本字段,因为页面上有多个使用相同chkKey函数的不同名称的文本字段。我需要引用我当前所在的文本字段,而不考虑名称。这可能吗?我认为这是一个家长/冒泡的问题,但我对这些事情根本没有经验 编辑:完整的HTML/JS: <!DOCTYPE html> <html> <head> <meta charset="utf-8" name="viewport" conten

Javascript/jQuery(不能按我所希望的方式工作):

我不想按名称引用文本字段,因为页面上有多个使用相同chkKey函数的不同名称的文本字段。我需要引用我当前所在的文本字段,而不考虑名称。这可能吗?我认为这是一个家长/冒泡的问题,但我对这些事情根本没有经验

编辑:完整的HTML/JS:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Boxes and Lines</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>

<body>
    <div id="outerDiv">
        <input type="button" name="btnNewField" value="Add New Field" onclick="appendNewField()">
        <p></p>
        <div id="mainDiv"></div>
    </div>

    <script>
        function chkKey(event) {
            if (event.keyCode == 13) {
                $(this).val("value", "wow");
            };
        };

        // returns a text field object
        function txtField(fieldName, fieldVal){
            var objTxtField = document.createElement("input");
            $(objTxtField).attr({
                type: "text",
                name: fieldName,
                value: fieldVal,
                onkeyup: "chkKey(event)"
            });
            return objTxtField;
        };

        // if there is no appended text field, create one and give it focus
        function appendNewField() {
            if ($("#mainDiv").find('[name="appTxtField"]').length === 0 ) {
                $(new txtField("appTxtField", "")).appendTo($("#mainDiv")).focus();
            };
        };
    </script>
</body>
</html>

箱线

函数chkKey(事件){ 如果(event.keyCode==13){ $(this.val(“value”,“wow”); }; }; //返回文本字段对象 函数txtField(fieldName,fieldVal){ var objTxtField=document.createElement(“输入”); $(objTxtField).attr({ 键入:“文本”, 名称:fieldName, 值:fieldVal, onkeyup:“chkKey(事件)” }); 返回objTxtField; }; //如果没有附加文本字段,请创建一个并将其设置为焦点 函数appendNewField(){ if($(“#mainDiv”).find('[name=“appTxtField”]')。length==0{ $(新的txtField(“appTxtField”),appendTo($(“#mainDiv”)).focus(); }; };
您的代码中有两个错误:

  • 像使用
    attr
    prop
    一样使用
    val
    ,但它只需要一个参数
  • 尝试使用
    attr
    添加
    keyup
    事件处理程序,您应该在
    on上使用
请看下面的代码,上面的项目已修复:

函数chkKey(事件){
如果(event.keyCode==13){
$(this.val)(“哇,这样的代码”);
};
};
//返回文本字段对象
函数txtField(fieldName,fieldVal){
var objTxtField=document.createElement(“输入”);
$(objTxtField).attr({
键入:“文本”,
名称:fieldName,
值:fieldVal
}).on('keyup',chkKey);
返回objTxtField;
};
//如果没有附加文本字段,请创建一个并将其设置为焦点
函数appendNewField(){
if($(“#mainDiv”).find('[name=“appTxtField”]')。length==0{
$(新的txtField(“appTxtField”),appendTo($(“#mainDiv”)).focus();
};
};
appendNewField()


onkeyup:“chkKey(event,this)”
将当前元素传递给函数。

是否可以添加完整的HTML完整HTML/JS代码。我不知道这是可能的。我以后一定会用这个。
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Boxes and Lines</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>

<body>
    <div id="outerDiv">
        <input type="button" name="btnNewField" value="Add New Field" onclick="appendNewField()">
        <p></p>
        <div id="mainDiv"></div>
    </div>

    <script>
        function chkKey(event) {
            if (event.keyCode == 13) {
                $(this).val("value", "wow");
            };
        };

        // returns a text field object
        function txtField(fieldName, fieldVal){
            var objTxtField = document.createElement("input");
            $(objTxtField).attr({
                type: "text",
                name: fieldName,
                value: fieldVal,
                onkeyup: "chkKey(event)"
            });
            return objTxtField;
        };

        // if there is no appended text field, create one and give it focus
        function appendNewField() {
            if ($("#mainDiv").find('[name="appTxtField"]').length === 0 ) {
                $(new txtField("appTxtField", "")).appendTo($("#mainDiv")).focus();
            };
        };
    </script>
</body>
</html>