javascript - 在 aspx 输入字段上/中插入文本并设置焦点?

标签 javascript jquery asp.net vb.net

我在 aspx 站点上执行 javascript 函数时遇到问题,该函数应在文本框(多行)内容的开头插入一个字符串,并将光标设置在插入字符串的中间。 它根本不会在我这边被调用。

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>

最佳答案

首先,您的代码应如下所示,在 document.ready() 上注册了处理程序(我删除了 asp.net 标记) http://jsfiddle.net/rMmwq/

另请注意

 var len = wert.length;

代替

 var len = wert.length();

关于javascript - 在 aspx 输入字段上/中插入文本并设置焦点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13360665/

相关文章:

javascript - InDesign : is it possible to store . .indd 文件内的 jsx 脚本首选项?

javascript - React.js 外部脚本

javascript - 为什么是 $ ('[tabindex="1"]' ).focus();关注 tabindex ="2"?

jquery - 使用jquery将选择器元素的html写入textarea

c# - Process.Exited 仅有时调用

javascript - 从 Ajax Post 请求访问 Node.js 服务器上的字符串

javascript - 我应该如何正确编码包含 HTML 的字符串(在 javascript 中)

jQuery $ ('#submitForm' ).find ('form' ) 与 jQuery $ ('#submitForm form' )

c# - 管理从 web api 返回的 json 中的属性名称

asp.net - 在 JavaScript 代码中嵌入常量服务器端标签的最佳方法是什么?