我现在有这样一个需求:我有一个表情框(FaceDlg),有两个多行文本框(ATextArea,BTextArea),以及两个用来显示表情框的按钮(AButton,BButton),并且上述这些东西处于同一个页面。
我现在要做的功能是:我想实现用这一个表情框,实现向不同的文本框插入表情符号。
例如:
AButton点击:弹出表情框(FaceDlg show),然后当我点击FaceDlg中的某个表情时将该表情对应的表情符号插入ATextArea。
BButton点击:弹出表情框(FaceDlg show),然后点击FaceDlg中的某个表情时将该表情对应的表情符号插入BTextArea。我实现的方法是:每次弹出表情框的时候,我都绑定一下事件(该事件的作用是,根据传进来的文本框ID,来区分向哪个文本框插入表情符号)。我现在遇到的问题是:这个事件无论我绑定多少次,好像都是以最后一次绑定的对象为准,因为我先绑定ATextArea,然后绑定BTextArea,最后无论是点击AButton,还是BButton都是将表情符号插入BTextArea。我对JS和JQuery都只了解皮毛,不知道这个是不是他们的事件机制问题,如果是,我如何解决这个问题呢?
如果不是,那么应该用哪种方法来实现这个功能呢?
我不想用两个表情框来实现,每个文本框来对应一个表情框。
我现在要做的功能是:我想实现用这一个表情框,实现向不同的文本框插入表情符号。
例如:
AButton点击:弹出表情框(FaceDlg show),然后当我点击FaceDlg中的某个表情时将该表情对应的表情符号插入ATextArea。
BButton点击:弹出表情框(FaceDlg show),然后点击FaceDlg中的某个表情时将该表情对应的表情符号插入BTextArea。我实现的方法是:每次弹出表情框的时候,我都绑定一下事件(该事件的作用是,根据传进来的文本框ID,来区分向哪个文本框插入表情符号)。我现在遇到的问题是:这个事件无论我绑定多少次,好像都是以最后一次绑定的对象为准,因为我先绑定ATextArea,然后绑定BTextArea,最后无论是点击AButton,还是BButton都是将表情符号插入BTextArea。我对JS和JQuery都只了解皮毛,不知道这个是不是他们的事件机制问题,如果是,我如何解决这个问题呢?
如果不是,那么应该用哪种方法来实现这个功能呢?
我不想用两个表情框来实现,每个文本框来对应一个表情框。
解决方案 »
- extjs treegrid中超连接
- Permission denied to access property
- 请到手帮新手看一下下面replace函数的代码意思是啥?
- 刷新子窗口,父窗口也刷新
- 高分请教,如何在Ns或者Moz中触发file元素的click()方法?
- 如何在js的字符串变量中引用其他变量
- 如果动态更改页面上textarea对象的readonly属性(JavaScript)
- 怎样做到只有当页面装载完毕才能进行操作?
- 关于用select选择确定月日
- 请问如何解决大量使用XMLDocument而产生的内存问题?
- 请问jquery如何取值?
- jquery 有没有办法在input框后边追加一个层?
当点击AButton时` 在click事件中加一行nowtxt=0;
当点击BButton时` 在click事件中加一行nowtxt=1;
然后在点击FaceDlg中的某个表情时判断nowtxt为0还是为1 如果为0 就给ATextArea加表情
如果为1 就给BTextArea加表情变量随便你定义`` 也可以是bool值``这应该很简单``只要是全局变量就行了``
就是写在所有事件外面的变量
当我第一次点击BButton的时候,又改变了全局变量的值,假设此时全局变量的值为B。但是,当我再次点击AButton的时候,全局变量的值却依然是B,继续点击下去,无论是点击AButton还是BButton全局变量的值永远是B。楼上两位所说的方法我都试过,就是因为上面这个原因,都无法走通。
1、在两个Button的点击事件中,传入对应文本框的ID,此方法无效,原因如上楼。
2、设置全局变量,无效。
3、放置一个隐藏域,其值为当前接受表情的文本框的ID,此方法无效,只有第一次绑定事件的时候才会去获取它的值,以后每次点击都是绑定第二个Button事件时或去的值。
然后BUTTON的事件就是往这里面写东西,
然后你的表情的东西插入时就在这里面去取
这样传,不行么?
绑定事件:/*************************************
*描述:根据表情分类,加载该分类的表情列表
*@selecter:当某个表情被点击时,该表情的alt属性值将写入的文本框(多行)的JQuery选择器。
*@classId:该表情分类的id
/************************************/
function fnLoadFaceItems(selecter,classId) {
$.post("/Home/GetFaces.jzking/" + classId, function(result) {
$("#FaceContent").replaceWith(result);
$(".imgFace").unbind("click");//imgFace是,单个表情的class
$(".imgFace").click(function() {
$(selecter).setCaret();
$(selecter).insertAtCaret($(this).attr("alt"));
$(".FaceBoxLayer").hide();
});
});
}调用:fnLoadFaceItems("#MainTxtBox",this.id);//此方法位于faceDlg.js中
fnLoadFaceItems("#ATextArea",faceClassID);当BButton点击的时候,是这样:
fnLoadFaceItems("#BTextArea",faceClassID);当第一次点击AButton时,表情直接插入ATextArea了,正常;如果一直不点击BButton,则一直正常。
当第一次点击BButton是,表情直接插入了BTextArea了,正常。此后无论点击AButton还是BButton,表情都插入BTextArea。当然以上顺序可以相反,但结果一致(一直插入BTextArea,或一直插入ATextArea)。
我想这是不是JS或JQuery的事件机制的问题?
因为这两个BUTTON只有在第一次被点击的时候才像里面放东西,因为BButton是第二次点击,所以,隐藏域里面一直都是放的BButton点击是设置的值,以后A,B button点击的时候都都不会在改变那个值了。不知道什么什么原因,很无语啊,从来没遇到过这种问题。