2015-09-29 67 views
3

目前我在这个场景中的股票在我当前的函数上。将变量传递给带有冒号,分号等符号的javascript函数

基本上,这个ajax调用会生成表情符号列表,但我希望当用户点击笑脸图像时,笑脸代码将被添加到消息文本框中。

例如,当用户点击微笑图片时,:-)代码将被添加到消息框中。 我的问题是,是否有可能将代码:-)传递给函数?

在我目前的代码上,addText(' + key + ')不起作用。 key的值是:-)。错误说Uncaught SyntaxError: Unexpected token :而当值是;)错误是Uncaught SyntaxError: Unexpected token ; 我也有:lol:等代码类似。任何帮助都感激不尽。

$.ajax({ 
    type: "POST", 
    async: true, 
    cache: false, 
    dataType: "json", 
    url: "./assets/php/scripts.php", 
    data: {command: 'get-smileys'}, 
    success: function (data) { 
     $("#smileys").empty(); 
     $("#smileys").append("<br>"); 
     var div_obj = document.createElement("ul"); 
     $(div_obj).addClass('list-inline'); 
     $.each(data, function(key, value) { 
      $(div_obj).append('<li><div class="col-xs-1 col-sm-1 col-lg-1" style="width:110px; height:80px" align="center"><img src="assets/img/smileys/' + value[0] + '" title="' + value[1] + '" onclick="addText(' + key + ');"><br>' + key + '</div></li>') 
      $("#smileys").append($(div_obj)); 
     }); 
     $("#smileys-flag").text('1'); 
     $("#loader-chat").hide(); 
    } 
}); 

而这里的中添加文本部分功能:你需要将它们传递的字符串文字下面给出

function addText(text){ 
    var fullMessage = $("#message").val(); 
    $("#message").val(fullMessage + text); 
} 
+0

让他们作为字符串添加'“”'这样的警报 – guradio

+0

东西(“:)”),或者按照下面的答案 – guradio

+0

@Pekka我尝试添加'“”'我代码'addText(''+ key +'“)',现在的错误是'Uncaught SyntaxError:Unexpected token}' – LeViNcE

回答

3

的问题。

'" onclick="addText(\'' + key + '\');"><br>' 

但是一个更好的解决方案将是使用jQuery的事件处理程序,而不是一个内嵌一个像

$(div_obj).append('<li><div class="col-xs-1 col-sm-1 col-lg-1" style="width:110px; height:80px" align="center"><img class="smileys" src="assets/img/smileys/' + value[0] + '" title="' + value[1] + '" data-smiley="' + key + '"><br>' + key + '</div></li>') 

然后

jQuery(function ($) { 
    $("#smileys").on('click', '.smileys', function() { 
     addText($(this).data('smiley')) 
    }); 
}) 
+0

感谢您的支持,您的第一个解决方案非常完美!我上面更新了我的定义,我如何将jQuery事件处理程序应用到我更新的定义上?我不太了解jQuery事件处理程序 – LeViNcE

+0

@LeViNcE只是在答案的第二部分进行修改......更新上面给出的每个循环内容 –

+0

Hooray !!!代码工作正常,非常感谢!顺便说一句,如果你介意,我如何在光标位置插入这些代码?每次我点击笑脸时,代码都会附加在文本的最后部分,我想将它放在光标位置上?可能吗?感谢 – LeViNcE

0

你需要通过你的ARGS为字符串文字。然后当你解码它时,你可以得到你想要的子串。

例如:

function takeSmiley(smiley) { 
    return smiley.substr(1, smiley.length - 2) // Return lol for :lol: 
} 

takeSmiley(":lol:");