2015-09-29 66 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:");