选中CheckBox数值传递到Textbox中

选中CheckBox数值传递到Textbox中
如同这个页面中的“代理商介绍项”
http://cnc.yyzs.net/member/daili/form_fabu_2.aspx
应该如何实现,谢谢!
用getElementById在FF下也不行,用服务端的方法应该怎么做?

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
__if (checkBox1.Checked == true)
__{
_____textBox1.Text += "是的!";
__}
__else
__{
____if(textBox1.Text.Contains("是的!"))
____{
________textBox1.Text=textBox1.Text.Remove(textBox1.Text.IndexOf("是的!"),3);
____}
__}
}

每行前的_是为了让你方便看嵌套结构 不是c#代码

Contains方法用于确认字符串中是否含有指定(括号内)的字符或字符串
Remove方法用于从字符串中删除字符或字符串
IndexOf方法用于返回首个在字符串中出现的字符或字符串的索引
上述例子中"是的!"为试图显示或删除的字符串
Remove方法中的第二参数3表示删除3个字符("是的!"是3个字符)

也就是说
若textBox中含有若干段你想要显示的文字(其中至少一个是通过勾选checkBox得到,其余是通过手动输入或粘贴等方式输入的)
那么取消勾选时会删除第一段字符串(不一定是通过勾选checkBox输入的那个)
其结果与你提供的参考一致

本人仅在vs08的WinForm程序中测试有效
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-07-13
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
this.textBox1.Text = this.checkBox1.Checked ? "被选中时显示的文字" : "没被选中时显示的文字";
}

这是CheckBox的选择改变事件,被选中的文字可以替换为checkBox1.Text(不用引号),没被选中时显示的文字可以替换为""(空引号),在此使用的是3目运算符 "? :"

想你看到的那个网站的效果其实也可以这样实现!
不过把事件的发送者定为(CheckBox)sender,首先选中所有要参与事件的CheckBox控件,然后添加事件,并取个事件名称!直接看代码吧!
private void AddInTextBox(object sender, EventArgs e)
{
CheckBox chk = (CheckBox)sender;
if (chk.Checked)//钩选时发生
{
this.textBox1.Text += chk.Text;
}
else//取消钩选时发生
{
//减去字符串的方法由你来扩充了!此方法有问题!我对字符串的操作不太熟

}
}

我用的方法你未必要用啊

经过考虑我觉得还是重新赋值比较省事哦!
第2个回答  2008-07-22
它这个是javascript写的,不回送,而且在Firefox下就不好使
其实你打开它的源文件就可以看到它这段源码,核心就是这个
function showinfo(n) //代理商填入快捷方式
{
if(document.form1.dljs[n-1].checked) //数组从0开始
{
document.all.DL_DLSJS.value+= eval("document.getElementById('msginfo'+n).innerHTML")
//注意getElementById和eval的用法
}
else
{
temp= document.all.DL_DLSJS.value;
document.all.DL_DLSJS.value = temp.replace(eval("document.getElementById('msginfo'+n).innerHTML"),"");
}
}
一个CheckBoxList一个TextBox
它的脚本应该是通过StringBuilder构建然后在后台吐到页面上的,这样在上面函数的参数n的控制上比较灵活
-----------------------------------------------------------------------------------------------------------
FireFox本来好像就不支持document.all,有人说3.0以后的版本支持,我这是最新版了,也不好使。你可不用document.all,用getElementById试试,实在不行就干脆用服务器端的方法
-----------------------------------------------------------------------------------------------------------
就是在PostBack之后修改那个TextBox的内容。如果你用的是CheckBoxList的话就把AutoPostBack设成true,注册一下SelectedIndexChanged事件,在事件里修改TextBox的内容。本回答被提问者采纳
第3个回答  2008-07-16
上面的例子 是用js做的
你看他源代码<span id="msginfo1">有多年的药品销售经验;</span><br />
<input name="dljs" onclick="showinfo(2)" type="checkbox" value="checkbox" />
这是他多选按钮 又一个onclick事件调用的showinfo()函数 参数是2
而这个函数就在上面啊
function showinfo(n) //代理商填入快捷方式
{
if(document.form1.dljs[n-1].checked) //数组从0开始
{
document.all.DL_DLSJS.value+= eval("document.getElementById('msginfo'+n).innerHTML")
//注意getElementById和eval的用法
}
else
{
temp= document.all.DL_DLSJS.value;
document.all.DL_DLSJS.value = temp.replace(eval("document.getElementById('msginfo'+n).innerHTML"),"");
}
}

源码都在这 你还有什么问题?
第4个回答  2008-07-22
AJAX

将两个控件都放到Uppanel里。就可以了。

微软官方的AJAX是支持firefox的。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网