jQuery输出显示未定义

时间:2019-01-07 07:17:50

标签: javascript jquery

这是我的代码: HTML部分

<form id="myform" action="whatever.php">
    <lable name="text">enter text</label>
    <input id="in" type="text" />
    <input id="in2" type="text" />
    <input type="submit" id="submit" />
</form>
              

jquery代码:

 (function($){
    $('#myform').on('click', '#submit', function(e) {
        var val = $(this).find('#in').val(); 
        $('ol.list').append('<li class="text-dark"><p>' + val + '.</p></li>');
        e.preventDefault();
    });
})(jQuery);

输出:

1.undefined。

2.undefined。

3.undefined。

2 个答案:

答案 0 :(得分:1)

在回调函数内的代码this上,指向ID为#submit的按钮而不是表单本身。 您可以只使用submit事件,您的代码就能正常工作

(function($){
    $('#myform').on('submit', function(e) {
         e.preventDefault();
        var val = $(this).find('#in').val(); 
        $('ol.list').append('<li class="text-dark"><p>' + val + '.</p></li>');
    });
})(jQuery);
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
</head>
<body>
<ol class="list"></ol>
<form id="myform" action="whatever.php">
    <label name="text">enter text</label>
    <input id="in" type="text" />
    <input id="in2" type="text" />
    <input type="submit" id="submit" />
</form>
	
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>

</body>
</html>

答案 1 :(得分:0)

然后ID为in的元素是form元素的子元素,而不是submit按钮。

您需要执行以下操作:转到父表单元素,然后在内部找到该元素,因为输入元素不在“提交”按钮中:

var val = $(this).closest("form").find('#in').val(); 

$(this).closest("form")将选择表单,然后find('#in')将选择ID为in的元素,然后val()将获得其值。

See the working DEMO fiddle