0

ライブ検索機能を備えたテキストボックスがあります。1つの問題を除いて、すべて正常に機能しています。その上に文字を入力すると、フォーカスが失われます。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 に答える