2015-09-11 86 views
1

大家好我有一个关于jquery点击发送功能的问题。我从jsfiddle创建了这个demo。所以,如果你访问演示,那么你可以看到有一个笑脸和textarea。当你写一些文本,然后按回车,然后消息发送成功。但是我想添加也当你点击笑脸然后它需要发送(w1)从图像sticker="(w1)"像点击发送。但点击发送功能不起作用。那里有什么问题,解决方案是什么?任何人都可以在这方面帮助我?所以基本上代替Jquery点击发送不起作用

$('body').on("click",'.emo', function() { 

    var ID = $('.sendcomment').attr("data-msgid"); 
    var comment = $('.sendcomment').val(); 

    if ($.trim(comment).length == 0) { 
     $("#commentload" + ID).text("nothing!"); 
    } else { 
     $("#commentload" + ID).text(comment); 
     $("#commentid" + ID).val('').css("height", "35px").focus(); 
    } 

}); 

的这一点,你必须使用的输入,并得到MsgId和:

JS

$('.sendcomment').bind('keydown', function (e) { 
    if (e.keyCode == 13) { 
     var ID = $(this).attr("data-msgid"); 
     var comment = $(this).val(); 

     if ($.trim(comment).length == 0) { 
      $("#commentload" + ID).text("Plese write your comment!"); 
     } else { 
      $("#commentload" + ID).text(comment); 
      $("#commentid" + ID).val('').css("height", "35px").focus(); 
     } 
    } 
}); 
/**/ 
$(document).ready(function() { 
$('body').on("click",'.emo', function() { 

     var ID = $(this).attr("data-msgid"); 
     var comment = $(this).val(); 

     if ($.trim(comment).length == 0) { 
      $("#commentload" + ID).text("nothing!"); 
     } else { 
      $("#commentload" + ID).text(comment); 
      $("#commentid" + ID).val('').css("height", "35px").focus(); 
     } 

}); 
}); 
    $('body').on('click', '.sm-sticker', function(event) { 
     event.preventDefault(); 
     var theComment = $(this).parents('.container').find('.sendcomment'); 
     var id = $(this).attr('id'); 
     var sticker = $(this).attr('sticker'); 
     var msg = jQuery.trim(theComment.val()); 

     if(msg == ''){ 
      var sp = ''; 
     } else { 
      var sp = ' '; 
     } 

     theComment.val(jQuery.trim(msg + sp + sticker + sp)); 
    }); 

HTML

<div class="container one"> 
<div class="comments-area" id="commentload47">comments will be come here</div> 
<div class="user-post" id="postbody47"> 
    <textarea class="sendcomment" name="comment" id="commentid47" data-msgid="47"></textarea> 
    <div class="stiemo"> 
    <img src="http://d.lanrentuku.com/down/png/1009/networking/emoticon_inlove.png" class="sm-sticker emo" sticker="(w1)"> click smiley to send (w1)</div> 
    </div> 
    </div> 
</div> 
+0

@TomSlick按回车工作正常后。但是,如果你点击笑脸,那么它不会发送。 – innovation

+0

http://jsfiddle.net/zr2r1vyz/2/错误的选择器 - 你需要.sendcomment属性.... – sinisake

+0

@TomSlick你正在使用的浏览器。我测试了所有的浏览器,但没有为我工作。 – innovation

回答

1

试试这个:

只是追加下面JS行theComment.val(jQuery.trim(msg + sp + sticker + sp));

var e = $.Event("keydown"); 
e.keyCode = 13; // # Some key code value 
$('.sendcomment').trigger(e); 

Demo

+0

这真的是最好的答案,非常干净。谢谢。 – innovation

+0

很高兴帮助:) –

1

你应该使用这个val从那里,使用相同的方法休息。 所以,当你在一些按钮上附加事件,并且你想要使用来自其他dom元素的数据时,你必须通过在委托函数下使用$(selector)来获取该元素,这非常简单。

+0

?这意味着没有发送消息。 – innovation

+0

如果我输入文字并按下笑脸,我会看到上面的文字,就像我按下回车键一样。 – vaske

+0

你是对的,但我也想当你点击笑脸然后它需要发送(W1),但它什么也没说。没有任何东西意味着不发送消息 – innovation