2015-09-11 130 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