2014-01-17 412 views
0

我看了很多類似於這個問題的帖子,但沒有人幫助我。我有這個按鈕添加文本到textarea。但是,如果我在textarea中手動輸入文本,按鈕停止工作。我究竟做錯了什麼?mvc 4 - javascript按鈕在輸入文字後停止工作

型號:

public class WhateverModels 
{ 
    public string TheText { get; set; } 
} 

控制器:

public class WhateverController : Controller { 
    public ActionResult Index() 
    { 
     SelectList tokens = new SelectList(new string[] { "A", "B", "C" }); 
     this.ViewBag.tokens = tokens; 
     WhateverModels w = new WhateverModels(); 
     return View(w); 
    } 
} 

檢視:

1)打開頁

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    <%: Html.TextAreaFor(x => x.TheText) %> 
    <br /> 
    <%: Html.DropDownList("tokens", string.Empty)%> 
    <br /> 
    <button type="button" id="AddButton" onclick="addToken()">test</button> 
    <script> 
     function addToken() { 
      var combo = document.getElementById("tokens"); 
      document.getElementById("TheText").textContent = 
       document.getElementById("TheText").textContent + 
       "[" + combo.options[combo.selectedIndex].value + "]"; 
     } 
    </script> 
</asp:Content> 

一步一步

2)點擊測試按鈕(注意,該文本被添加到文本域)

3)輸入文本區域並鍵入一些

4)點擊測試按鈕(現在不工作)

(用firefox)

感謝您的關注

+0

這不會解決你的問題,但看看[+ =運營商MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Assignment_operators)。 'document.getElementById(「TheText」)。textContent + =「[」+ combo.options [combo.selectedIndex] .value +「]」;' – Givi

回答

0

的屬性的textContent沒有很好地在一些瀏覽器的支持。這是更好地使用textArea.value設置文本:

  function addToken() { 
       var combo = document.getElementById("tokens"); 
       document.getElementById("TheText").value += 
       "[" + combo.options[combo.selectedIndex].value + "]"; 
      } 

有關FF和Chrome設置的textContent不會更新UI的一些原因。

+0

它工作,謝謝! VS2013 intellisense沒有顯示「值」屬性,但它在運行時仍然有效。 – heringer