我希望能够在表格中输入一些文字后点击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
答案 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),因此不会加载变量标题。
如果要检索标题,请创建一个内部包含
的函数getTitlesreturn $('input[name^=titles]').map(function(idx, elem) {
return $(elem).val();
}).get();
并从您的功能中调用它。