在复选框事件asp.net c#上将文本从一个文本框复制到另一个文本框

时间:2016-07-19 18:34:03

标签: c# asp.net

我有两个地址字段,有46个文本框,每个字段只接受一个字符。

例如。

地址

第1行:1.2.3.4 .... 46

第2行:1.2.3.4 ...... 46

现在点击复选框oncheckchanged事件,

我想分别将每个字符从文本框复制到另一个字符,如果未选中复选框,则第一行应保持原样。

如何做到这一点?

我尝试使用谷歌搜索,但没有多大帮助。

<asp:TextBox runat="server" ID="line1_1" MaxLength="1" ></asp:TextBox><br/>


<asp:CheckBox runat="server" ID="if_same" Text="Same" OnCheckedChanged="if_same_CheckedChanged" AutoPostBack="true" />

<asp:TextBox runat="server" ID="line2_1" MaxLength="1" ></asp:TextBox><asp:TextBox runat="server" ID="line2_46" MaxLength="1" ></asp:TextBox>

protected void if_same_CheckedChanged(object sender, EventArgs e) 
{ 
set_per_local(); 
} 

public void set_per_local() 
{ 
if (if_same.Checked == true) 
{ 
checkIfNullEmpty(); 
disablelocal(); 

string line1_address = string.Concat(line1_1.Text,line1_46.Text); 
try
{   
for (int i = 0; i < line1_address.Length; i++) 
{ 
line2_1.Text = line1_address[0].ToString(); 
line2_46.Text = line1_address[45].ToString(); 
} 
} 
catch (Exception) 
{   
throw; 
} 
} 
else 
{ 
Enablelocal(); 
} 
}  

public void checkIfNullEmpty() 
{ 
if (string.IsNullOrEmpty(line1_1.Text)) line1_1.Text = " "; 
if (string.IsNullOrEmpty(line1_46.Text)) line1_46.Text = " "; 
} 

public void disablelocal() 
{ 
local_line1_address1.Enabled = false; 
local_line1_address46.Enabled = false; 
} 

public void enablelocal()
 { 
local_line1_address1.Enabled = true;
local_line1_address46.Enabled = true;
 } 

2 个答案:

答案 0 :(得分:0)

我认为这可能是客户端javascript或jQuery等的更好的候选者。此外,如果您已经遵循逻辑模式来命名这46个文本框,您可以在javascript中挂钩到checkbox.changed事件并启动遍历每个源字段的循环,并使用源值替换目标字段文本框。像

这样的东西
<script>
$(".checkbox").change(function() {
   if(this.checked) {
      alltextboxes();
   }
});

function copy alltextboxes()
{
   for (int i = 0; i < 46; i++)
   {
      document.getElementById(tgtTbox+i).value = document.getElementById(srcTbox+i).value
   }
}
</script>

免责声明:我没有测试过这段代码。我只是输入答案。根据您的要求,此代码可能需要进行少量修改。请注意,这仅适用于文本框标签的命名约定遵循模式(例如&#34; SourceText1,SourceText2,TargetText1,TargetText2等等。&#34;)。

答案 1 :(得分:0)

我发现这个网站更有帮助。

http://www.dotnetspark.com/kb/3125-how-to-copy-textbox---text-to-another-one.aspx

<asp:TextBox runat="server" ID="TextBox1" MaxLength="1" size="1"></asp:TextBox>
<asp:TextBox runat="server" ID="TextBox2" MaxLength="1" size="1"></asp:TextBox>
<asp:TextBox runat="server" ID="TextBox3" MaxLength="1" size="1"></asp:TextBox>
<asp:TextBox runat="server" ID="TextBox4" MaxLength="1" size="1"></asp:TextBox>
<asp:CheckBox runat="server" ID="CheckBox1"  Text="Same as above" onclick="CopyText()" />
<asp:TextBox runat="server" ID="iBox1" MaxLength="1" size="1"></asp:TextBox>
<asp:TextBox runat="server" ID="iBox2" MaxLength="1" size="1"></asp:TextBox>
<asp:TextBox runat="server" ID="iBox3"  MaxLength="1" size="1"></asp:TextBox>
<asp:TextBox runat="server" ID="iBox4"  MaxLength="1" size="1"></asp:TextBox>

<script type="text/javascript">
function CopyText() {
var cb = document.getElementById('CheckBox1');
var tb1 = document.getElementById('TextBox1');
 var tb2 = document.getElementById('TextBox2');
  var tb3 = document.getElementById('TextBox3');
var tb4 = document.getElementById('TextBox4');
        var tb11 = document.getElementById('iBox1');
        var tb12 = document.getElementById('iBox2');
        var tb13 = document.getElementById('iBox3');
        var tb14 = document.getElementById('iBox4');
if (cb.checked) {
            tb11.value = tb1.value;
            tb12.value = tb2.value;
            tb13.value = tb3.value;
            tb14.value = tb4.value;  } 
 else {
            tb11.value = '';
            tb12.value = '';
            tb13.value = '';
            tb14.value = '';   }
}
}
<script>