如何显示从用户输入获得的jquery变量?

时间:2016-01-24 22:05:04

标签: javascript jquery javascript-events

我希望能够在表格中输入一些文字后点击submit按钮,然后点击results按钮显示我刚输入的内容。

似乎titles变量是"卡住"在function onClick(event)函数中。我该如何解决这个问题?"

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<body>
<script type="text/javascript">
    $(document).ready(function() {
        $(function() {
            $('#submit').click(onClick);
        });

        function onClick(event) {
            var titles = $('input[name^=titles]').map(function(idx, elem) {
                return $(elem).val();
            }).get();
            window.alert(titles); //it displays the titles here
        }

        $("#result").click(function() {
            window.alert('x');
            window.alert(titles); //but not here
            $("p").text(titles[0]);
        });
    });
</script>
    <p>display results here</p>
    <input name="titles[]">
    <input name="titles[]">
    ​<button id="submit">submit</button>
    <button id="results">results</button>
</body>

这可能已经得到了回答,但我不太了解有效搜索答案的行话。我还使用了一些代码,因为我想要输入两个字符串输入:Get values from multiple inputs jQuery

2 个答案:

答案 0 :(得分:1)

首先,您的第二个click事件的选择器中有一个拼写错误。它应该是#results,而不是#result

问题的核心是titles变量超出了第二个click事件的范围。

您可以通过在任一函数之外声明它来解决此问题。这很好,你可以在任何一个中引用它。

var titles = [];

function onClick(event) {
  titles = $('input[name^=titles]').map(function(idx, elem) {
    return $(elem).val();
  }).get();
  window.alert(titles);
}

$("#results").click(function() {
  window.alert(titles);
  $("p").text(titles[0]);
});

答案 1 :(得分:1)

嗨,奥斯汀,当你点击提交时,jquery会调用你的函数onClick 但是这个功能与你在这里注册的功能无关

$("#result").click(function() { // resultCallback

所以当你定义变量

var titles

这个变量,就像你说的那样,绑定(作用域)到onClick函数,你无法从resultCallback访问它。此外,它完全异步。单击结果按钮(即调用resultCallback)不是单击提交按钮(即调用onClick),因此不会加载变量标题。

如果要检索标题,请创建一个内部包含

的函数getTitles
return $('input[name^=titles]').map(function(idx, elem) {
    return $(elem).val();
  }).get();

并从您的功能中调用它。