0

我有一个带有实时搜索功能的文本框。除了一个问题,一切都很好。如果我在上面输入任何字符,它就会失去焦点。如果我设置 textbox.Focus(),光标会在文本框的开头。

我已经尝试了互联网上的大多数解决方案。请在下面检查我的代码。

asp:TextBox ID="searchCompany" runat="server" Text="" CssClass="searchCompany" AutoPostBack="true" Width="190px" OnTextChanged="searchCompany_TextChanged"></asp:TextBox>

在 page_Load

protected void Page_Load(object sender, EventArgs e)
        {

            //ScriptManager1.RegisterAsyncPostBackControl(Menu1);
            menuDisplay();
            searchCompany.Attributes.Add("onkeyup", "setTimeout('__doPostBack(\\'" + searchCompany.UniqueID + "\\',\\'\\')', 0);");

            //searchCompany.Attributes.Add("onfocus", "javascript:setSelectionRange('" + "','')");
            //searchCompany.Focus();


        }

我已经尝试过如下的javascript

<script type="text/javascript">

    function setSelectionRange() {
        var inputField = document.getElementById('searchCompany');
        if (inputField != null && inputField.value.length > 0) {
            if (inputField.createTextRange) {
                var FieldRange = inputField.createTextRange();
                FieldRange.moveStart('character',inputField.value.length);
                FieldRange.collapse();
                FieldRange.select();
            }
        }
    }

</script>

我试图将代码放在“searchCompany_TextChanged”方法上,如果用户每次在文本框中键入任何字符,该方法就会调用,但它不能正常工作。

我看到了使用 Textbox.Select() 的其他解决方案,但我猜 System.Windows.Control 在 asp.net 中不起作用。

任何的想法??

4

1 回答 1

2

有一个非常简单的技巧对我有用。基本上,将输入自身的文本值设置为它自己的文本值,这会将光标移动到文本的末尾。然后集中注意力。此代码使用 jQuery 来演示这一点,但您也应该能够在直接 JS 中做到这一点。

HTML

<input type="text" id="focusText"></input>
<button id="focusButton">Set Focus</button>

JavaScript

$("#focusButton").click(function()  {
    var text = $("#focusText").val();
    $("#focusText").val(text).focus();
})

这是 JavaScript 的非 jQuery 示例,HTML 应该相同:

document.getElementById("focusButton").onclick = function()  {
    var inputElement = document.getElementById("focusText");
    var text = inputElement.value;
    inputElement.value = text;
    inputElement.focus();
}

这是一个演示代码的非 jQuery 版本的小提琴:http: //jsfiddle.net/C3gCa/

于 2013-02-18T21:47:23.397 回答