如何在Javascript函数多参数中传递asp.net C#控件ID

时间:2017-05-25 09:43:46

标签: javascript c# asp.net

我的目标是每当我在textbox1中插入时,它都会在TextBox2中自动更新。我不想使用“输入标签”或回发。请仅在下面的代码中更正:)

<script type="text/javascript">
        function OneTextToother1(a, b) {
            alert(a.value); //it render correct value
            alert(b.value); // it is undefined
            document.getElementById(b).value = document.getElementById(a).value
         }
    </script>


<asp:TextBox ID="txtFirst" runat="server" onkeyup="OneTextToother1( this, ' <%= txtSecond.ClientID %>');" ></asp:TextBox>    
<asp:TextBox ID="txtSecond" runat="server"></asp:TextBox>

正如John Answer所建议的那样。我能够达到他的建议。请仅修改上述代码。我想要通用的JS函数,在asp文本框声明中,我将传递源和目标clientID。它可以实现吗?

1 个答案:

答案 0 :(得分:1)

将onkeyup更改为:

onkeyup="OneTextToother1();"

然后JavaScript可以是:

function OneTextToother1() {
            document.getElementById('<%= txtSecond.ClientID %>').value = document.getElementById('<%= txtFirst.ClientID %>').value;
        }

希望有所帮助

修改

将onkeyup更改为:

onkeyup="OneTextToother1(this, 'txt_delivery');" 

其中txt_delivery是您要更改的控件的ID

然后我们需要修改javascript。

OneTextToother将如下所示:

 function OneTextToother1(a, b) {
            document.getElementById(findItemInArray(b)).value = a.value;
        }

我们需要添加一个额外的功能:

function findItemInArray(b) {
            var items = [
                ['txt_delivery', '<%= txt_deliverydate.ClientID %>'],
                ['txt_route', '<%= txt_route.ClientID %>']
            ];
            for (var k = 0; k < items.length; k++) {
                if (items[k][0] === b ) {
                    return items[k][1];
                }
            }
        }

由于我们无法将ClientID传递给javascript函数,因此最好将每个ASP控件存储在javascript数组中。

var items保存ASP控件的名称,然后获取客户端ID。然后我们循环遍历数组以找到传入的参数。我不相信有一个更简单的解决方案,可以通过这种方式来支持多个控件。

您只需将每个c#控件添加到javascript函数中,然后传递控件名称。

如果这回答了您的问题,我希望标记为正确。