我的目标是每当我在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。它可以实现吗?
答案 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函数中,然后传递控件名称。
如果这回答了您的问题,我希望标记为正确。