2012-11-13 44 views
1

我有一個問題,在aspx網站上執行一個javascript函數,該網站應該在TextBox(MultiLine)Content的開頭插入一個字符串,並在插入的字符串中設置光標。 它只是不會在我身邊被叫到。在aspx輸入欄中插入文本和設置焦點?

ASPX代碼:

<head runat="server"> 
    <title>Unbenannte Seite</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     function setCaretPosition(elemId, caretPos) { 
      var elem = document.getElementById(elemId); 

      if(elem != null) { 
       if(elem.createTextRange) { 
        var range = elem.createTextRange(); 
        range.move('character', caretPos); 
        range.select(); 
       } 
       else { 
        if(elem.selectionStart) { 
         elem.focus(); 
         elem.setSelectionRange(caretPos, caretPos); 
        } 
        else 
         elem.focus(); 
       } 
      } 
     } 

     $("#<%=Button1.ClientID %>").click(function(e){ 
      e.preventDefault(); 
      var d = new Date(); 
      var curr_date = d.getDate(); 
      var curr_month = d.getMonth() + 1; 
      var curr_year = d.getFullYear(); 
      var curr_hour = d.getHours(); 
      var curr_minute = d.getMinutes(); 
      var name = "Name"; 
      var wert = curr_date + "." + curr_month + "." + curr_year + "/" + curr_hour + ":" + curr_minute + "/" + name + "\n" + "----------------------------------------" + "\n"; 
      var len = wert.length(); 
      wert = wert + "\n" + "----------------------------------------" + "\n" + "\n"; 
      var input = $("#<%=tbVZusatz.ClientID %>"); 
      input.val(wert + input.val()); 
      input.val(input.val()); 
      setCaretPosition("<%=tbVZusatz.ClientID %>",len); 
     }); 

    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:TextBox ID="tbVZusatz" runat="server" TextMode="MultiLine" Height="500px" Width="300px"></asp:TextBox> 
     <br /> 
     <br /> 
     <asp:Button ID="Button1" runat="server" Text="Stempel" /> 
    </div> 
    </form> 
</body> 

如何插入的字符串應該是這樣的:

13.11.2012/13:08/LightMonk 
---------------------------------------- 
(Position of the Cursor here!) 
---------------------------------------- 

來源我用這個:

http://jsfiddle.net/VP9zT/1/

Set keyboard caret position in html textbox

修正的Javascript:

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("#<%=Button1.ClientID %>").click(function(e){ 
      e.preventDefault(); 
      var d = new Date(); 
      var curr_date = d.getDate(); 
      var curr_month = d.getMonth() + 1; 
      var curr_year = d.getFullYear(); 
      var curr_hour = d.getHours(); 
      var curr_minute = d.getMinutes(); 
      var name = "Name"; 
      var wert = curr_date + "." + curr_month + "." + curr_year + "/" + curr_hour + ":" + curr_minute + "/" + name + "\n" + "----------------------------------------" + "\n"; 
      var len = wert.length; 
      wert = wert + "\n" + "----------------------------------------" + "\n" + "\n"; 
      var input = $("#<%=tbVZusatz.ClientID %>"); 
      input.val(wert + input.val()); 
      input.val(input.val()); 
      setCaretPosition("<%=tbVZusatz.ClientID %>",len); 
     }); 
    }); 

    function setCaretPosition(elemId, caretPos) { 
     var elem = document.getElementById(elemId); 

     if(elem != null) { 
      if(elem.createTextRange) { 
       var range = elem.createTextRange(); 
       range.move('character', caretPos); 
       range.select(); 
      } 
      else { 
       if(elem.selectionStart) { 
        elem.focus(); 
        elem.setSelectionRange(caretPos, caretPos); 
       } 
       else 
        elem.focus(); 
      } 
     } 
    } 


</script> 
+0

我猜var input = $(「#tbVZusatz」);應該是var input = $(「#<%= tbVZusatz.ClientID%>」); setCaretPosition(「tbVZusatz」,len)的同樣問題; – jbl

+0

試了一下,仍然沒有工作=/ 我更新我的問題,它認爲.... – LightMonk

+0

setCaretPosition調用不應該包括'#' – jbl

回答

2

首先,你的代碼看起來應該是這樣,與處理機註冊上的document.ready()(我刪除了asp.net標記) http://jsfiddle.net/rMmwq/

也請注意

var len = wert.length; 

,而不是

var len = wert.length(); 
+0

THX !!我將用更正後的腳本更新我的問題;) – LightMonk