1

我有一个 Javascript,当我在一个文本框中写入时,它会填充另一个文本框。但我需要将焦点留在第三个文本框中。

实际上,我的代码是:

<script type="text/javascript" language="javascript">
        function SelectValue(source, eventArgs) {
            document.getElementById('<%= txtCodeProduct.ClientID %>').value = eventArgs.get_value();
            document.getElementById('<%= txtQuantity.ClientID %>').focus();
            }
</script>

但是焦点不起作用......如果我在代码中发出警报,焦点就会起作用:

<script type="text/javascript" language="javascript">
        function SelectValue(source, eventArgs) {
            document.getElementById('<%= txtCodeProduct.ClientID %>').value = eventArgs.get_value();
            document.getElementById('<%= txtQuantity.ClientID %>').focus();
            alert("test");
            }

我如何在不使用警报的情况下解决这个问题?我的文本框采用更新面板的形式。

谢谢。

4

2 回答 2

1

尝试:

 function SelectValue(source, eventArgs) {
    document.getElementById('<%= txtCodeProduct.ClientID %>').value = eventArgs.get_value();
    setTimeout( function(){
            document.getElementById('<%= txtQuantity.ClientID %>').focus();
        }, 0);
}
于 2012-12-18T12:48:05.377 回答
1

您使用什么版本的 Asp.Net?否则你可以使用ClientIDMode http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspx

<asp:TextBox ID="txtCodeProduct" runat="server" ClientIDMode="static" />
<asp:TextBox ID="txtQuantity"    runat="server" ClientIDMode="static" />

我还推荐使用 jQuery:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" ></script>
<script type="text/javascript">
    function SelectValue(source, eventArgs) {
        $("#txtCodeProduct").val(eventArgs.get_value());
        $("#txtQuantity").focus();
    }

http://api.jquery.com/focus/

于 2012-12-18T13:00:56.363 回答