2016-01-24 79 views
0

我希望能夠點擊輸入一些文本表格後submit按鈕,然後單擊results按鈕來顯示我剛纔輸入。如何顯示從用戶輸入中獲取的jQuery變量?

這似乎是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

回答

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

奧斯汀嗨,當你點擊提交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(); 

,並從你的函數調用它。

相關問題