var _max = $('.suifaLengthTip').text();// 随发最大可输入的文字长? $(function() { suifaImgesSelectAndPreview(); suifaContentLengthLimit(); replyContentLengthLimit(); releaseEvent(); viewSuifaEvent(); replyEvent(); clickZanEvent(); clickFocusEvent(); deleteSuifa(); $('.emotion').qqFace({ id : 'facebox', assign : 'suifaContent', path : 'vendors/jQuery-qqFace/arclist/' // 表情存放的路? }); }); /** * 删除随发 */ function deleteSuifa() { var suifaId = ""; $(".suifa_delete").unbind("click").click(function() { suifaId = $(this).attr("data_suifa_id"); $("#myDeleteSuifaModal").modal("show"); }); // 删除回复确认 $("#btnDeleteSuifa").unbind("click").click(function() { $.post("community/deleteSuifa.htm", { 'suifaId' : suifaId }, function(result) { if (result.success) { $("#myDeleteSuifaModal").modal("hide"); $("#"+suifaId).remove(); $('.wrapper:eq(0)').masonry('reload'); } else { if (!result.login) { window.location.href = "login.htm"; } alert(result.msg); } }, "json"); }); } /** * 删除回复 */ function deleteReplyEvent() { var loginUserId = $(".openmodal .reply").attr("login_id"); $(".replyContent").unbind("click"); $(".replyContent").click(function() { var replyUserId = $(this).attr("user_id"); var replyId = $(this).attr("reply_id"); var suifaId = $(this).attr("suifa_id"); // 只有登录用户id和回复者id相同才能删除回复 if (replyUserId == loginUserId) { $("#myDeleteReplyModal").modal("show"); $("#btnDeleteReply").attr("reply_id", replyId); $("#btnDeleteReply").attr("suifaId", suifaId); } }); // 删除回复确认 $("#btnDeleteReply").unbind("click"); $("#btnDeleteReply").click(function() { var replyId = $(this).attr("reply_id"); var suifaId = $(this).attr("suifaId"); $.post("community/deleteReplySuifa.htm", { 'replyId' : replyId }, function(result) { if (result.success) { $("#myDeleteReplyModal").modal("hide"); var delCount = removeReplyTr(replyId); var newCountreply = $("#view_suifa_reply").text() * 1 - delCount; // 回复成功以后,页面回复数据加1 $("#view_suifa_reply").text(newCountreply); $("#countReply" + suifaId).text(newCountreply); } else { if (!result.login) { window.location.href = "login.htm"; } alert(result.msg); } }, "json"); }); } /** * 删除回复的tr元素 * * @param replyId */ function removeReplyTr(replyId) { var count = 0; $("#" + replyId).remove(); var replyItemTr = $("tr[parent_id='" + replyId + "']"); replyItemTr.each(function() { var itemRplyId = $(this).attr("id"); count = count + removeReplyTr(itemRplyId); }); replyItemTr.remove(); count++; return count; } /** * 点击关注事件注册 */ function clickFocusEvent() { $("#aFocus").unbind("click"); $("#aFocus").click(function() { // 判断是否已关注,如果已关注,则取消关? var toUserId = $(this).attr("data_to_id"); if (toUserId) { $.post("community/focusSuifaUser.htm", { 'toUserId' : toUserId }, function(result) { if (result.success) { if (result.attention) { $("#aFocus").text("已关?); } else { $("#aFocus").text("+关注"); } } else { if (!result.login) { window.location.href = "login.htm"; } } }, "json"); } }); } /** * 点赞事件注册 */ function clickZanEvent() { $(".zan").unbind("click"); $(".zan").click(function() { var $cur = $(this); var suifaId = $(this).find("#zan_suifaId").val(); var $zanCout = $(this).find(".like"); var $zanCout1 = $("#countZan" + suifaId); if (suifaId) { $.post("community/suifaClickZan.htm", { 'suifaId' : suifaId }, function(result) { if (result.success) { var newZanCount = $zanCout.text() * 1; if (result.zan) { newZanCount = newZanCount + 1; $cur.attr("class","like-a zan"); } else { newZanCount = newZanCount - 1; $cur.attr("class","zan"); } $zanCout.text(newZanCount); $zanCout1.text(newZanCount); } else { if (!result.login) { window.location.href = "login.htm"; } } }, "json"); } }); } /** * 回复随发事件注册 */ function replyEvent() { var $suifaId = $("#view_suifa_id");// 随发主键 var $parentReplyId = $("#view_parent_reply_id");// 被回复的主键 var $suifaContent = $("#replyContent");// 回复的内? var $btn = $("#btnReply");// 回复发布按钮 $("#btnReply").unbind("click"); $("#btnReply").click(function() { var suifaId = $suifaId.val(); var parentReplyId = $parentReplyId.val(); var suifaContent = $suifaContent.val(); if (suifaContent == null || suifaContent == undefined || suifaContent == '') { // alert("回复内容不能为空,请重新输入后再提交回复?); return; } $.post("community/replySuifa.htm", { 'suifaId' : suifaId, 'parentReplyId' : parentReplyId, 'content' : suifaContent }, function(result) { if (result.success) { var replyTr = createReplyTr(result.reply); if (result.reply.parent_reply_id) { var $tr; var $parentAllTr = $("tr[parent_id='" + result.reply.parent_reply_id + "']"); if ($parentAllTr && $parentAllTr.length > 0) { $tr = $parentAllTr.last(); } else { $tr = $("#" + result.reply.parent_reply_id); } $tr.after(replyTr); } else { $(".openmodal .reply").show(); $(".openmodal .reply").append(replyTr); deleteReplyEvent(); } var newCountreply = $("#countReply" + suifaId).text() * 1 + 1; // 回复成功以后,页面回复数据加1 $("#view_suifa_reply").text(newCountreply); $("#countReply" + suifaId).text(newCountreply); $("#replySuccessTip").show(); $("#replyContent").attr({ "disabled" : "disabled" }); $suifaContent.val(""); // 禁用发布按钮 $btn.attr({ "disabled" : "disabled" });// 内容长度超出,则禁用发布按钮 $btn.addClass("btn-disabled"); /** * 1秒钟以后重新启用 */ setTimeout("enableReplyDialog()", 1000); } else { alert(result.msg); } }, 'json'); }); } /** * 启用回复弹出? */ function enableReplyDialog() { $(".replyLengthTip").text(_max); $("#replySuccessTip").hide(); $("#replyContent").removeAttr("disabled"); } /** * 查看随发事件注册 */ function viewSuifaEvent() { var $suifaImage = $("#view_suifa_image"); var $suifaImagePath = $("#suifa_image_path"); var $defaultUserImage = $("#view_default_user_image");// 默认头像 var $userImage = $("#view_user_image"); var $userName = $("#view_user_name"); var $suifaZan = $("#view_suifa_zan"); var $suifaDate = $("#view_suifa_date"); var $suifaReply = $("#view_suifa_reply"); var $suifaContent = $("#view_suifa_content"); var $viewSuifaId = $("#view_suifa_id"); var $parentReplyId = $("#view_parent_reply_id");// 被回复的主键 var $replyToUserName = $("#view_reply_to_user_name"); var $homea = $(".home_a"); var $view_suifa_zan = $("#suifa_zan"); var suifaImageSrc = $suifaImagePath.val(); var userUrl = $("#hidden_user_url").val(); var userImageSrc = $("#hidden_user_image").val(); $("div.wfc a.openModal").unbind(); $("div.wfc a.openModal").click(function() { if ($(this).find(".official").length > 0) { return; } var suifaId = $(this).find("#suifaId").val(); $(this).find(".zan").attr("data_id", suifaId); // 关注标签 var $focus = $("#aFocus"); // 获取当前登录用户id var userId = $focus.attr("data_to_id"); // 初始化关注按? $focus.text("+关注"); $focus.removeAttr("data_focus"); $("#myModal").find("#zan_suifaId").val(suifaId); $(".openmodal .reply").hide().text(""); $.post("community/viewSuifaInfo.htm", { 'suifaId' : suifaId }, function(result) { if (result.official) { return; } // 弹出显示回复? $("#myModal").modal("show"); $("#replyContent").val(""); $homea.attr("href", userUrl + result.user_id); if(result.dianzan==true){ $view_suifa_zan.attr("class" ,"like-a zan"); }else{ $view_suifa_zan.attr("class" ,"zan"); } // 判断是否显示关注按钮,如果随发的用户和当前用户是同一个,则隐藏关注按? if ($("#hidden_user_id").val() == result.user_id) { $focus.hide(); } else { $focus.show(); // 记录被关注的用户主键,用于被关注时方便获? $focus.attr("data_to_id", result.user_id); } // 判断是否已关? if (result.focus) { $focus.text("已关?); $focus.attr("data_focus", "true"); } $viewSuifaId.val(result.suifa_id); $suifaImage.attr("src", suifaImageSrc + result.image); if (result.user_image && result.user_image != "") { $defaultUserImage.hide(); $userImage.show(); $userImage.attr("src", userImageSrc + "=" + result.user_image); } else { $userImage.hide(); $defaultUserImage.show(); } $userName.text(result.user_name ? result.user_name : result.login_name); $suifaZan.text(result.count_zan); $suifaDate.text(result.display_suifa_date); $suifaReply.text(result.count_reply); $suifaContent.html(replace_em(result.content)); $replyToUserName.text(result.user_name ? result.user_name : result.login_name);// 回复对象,默认是随发用户 var reply = ''; // 填充回复列表 $.each(result.replys, function(key, value) { reply = reply + createReplyTr(value); }); if (reply != '') { $(".openmodal .reply").show(); $(".openmodal .reply").prepend(reply); } deleteReplyEvent(); }, 'json'); }); } /** * 选择回复 * * @param replyId * 回复主键 * @param userName * 被回复的用户 */ function selectReply(replyId, userName) { $("#view_parent_reply_id").val(replyId); $("#view_reply_to_user_name").text(userName); } function replace_em(str) { if (typeof(str) == "undefined") { return ""; } str = str.replace(/\/g, '>'); str = str.replace(/\n/g, '
'); str = str.replace(/\[em_([0-9]*)\]/g, ''); return str; } /** * 创建回复的tr标签 * * @param value * @returns {String} */ function createReplyTr(value) { var reply = ''; if (value) { reply = reply + '
'; reply = reply + '
'; reply = reply + ' '; reply = reply + ' ' + (value.user_name || '' ? value.user_name : value.login_name) + ' '; if (value.parent_reply_id) { reply = reply + '回复 ' + (value.parent_user_name || '' ? value.parent_user_name : value.parent_login_name) + ""; } reply = reply + '? + replace_em(value.reply_content); reply = reply + ' '; reply = reply + '
'; reply = reply + '
'; reply = reply + ' ' + value.display_reply_date + ' '; reply = reply + ' 回复'; reply = reply + '
'; reply = reply + '
'; } return reply; } /** * 发布按钮点击事件处理 */ function releaseEvent() { $("#btnRelease").click(function() { $.post("community/releaseSuifa.htm", { 'image' : $("#suifaImage").val(), 'image_t' : $("#suifaImage_t").val(), 'content' : $("#suifaContent").val() }, function(result) { if (result.success) { // 禁用发布按钮 $("#btnRelease").attr({ "disabled" : "disabled" }); $("#btnRelease").addClass("btn-disabled"); // 显示发布成功提示? $("#suifaSuccessTip").show(); // 清空文本域里面的内容 $("#suifaContent").val(""); // 禁用 $("#suifaContent").attr({ "disabled" : "disabled" }); setTimeout("hideSuifaDialog()", 1000); if ($('#waterfall')) { var $newSuifaDiv = $(createSuifaDiv(result.suifa)); $('#waterfall').prepend($newSuifaDiv); var $newElems = $newSuifaDiv.css({ opacity : 0 }); // 在添加到masonry布局之前保证图片载入 $newElems.imagesLoaded(function() { // 现在可以显示所有的元素? $newElems.animate({ opacity : 1 }); // $('.wrapper:eq(0)').masonry('appended', $newElems, true); $('.wrapper:eq(0)').masonry('reload'); }); } viewSuifaEvent(); deleteSuifa(); } else { alert(result.msg); } }, "json"); }); } /** * 关闭随发弹出框,并初始化里面的内? */ function hideSuifaDialog() { $('.suifaLengthTip').text(_max); $("#myWriteModal").modal("hide"); $("#suifaSuccessTip").hide(); $("#suifaImage").val(""); $("#suifaContent").val(""); $("#suifaContent").removeAttr("disabled"); $("#suifaUpdateImage").val(""); $("#imagePreview").find("img").remove(); $("#btnRelease").attr({ "disabled" : "disabled" });// 内容长度超出,则禁用发布按钮 $("#btnRelease").addClass("btn-disabled"); } /** * 随发图片选择和预? */ function suifaImgesSelectAndPreview() { $("#imagePreview").click(function() { $("#suifaUpdateImage").click(); }); $("#myWriteModal").on("change", "#suifaUpdateImage", function() { var _preview = $("#imagePreview"); // 删除预览图片 _preview.find("img").remove(); _preview.attr("style", "background:url(images/community/loading.gif) center center no-repeat;line-height:400px;"); _preview.text("上传?.."); $.ajaxFileUpload({ url : 'community/upload.htm', // 用于文件上传的服务器端请求地址 secureuri : false, // 一般设置为false fileElementId : "suifaUpdateImage", // 文件上传控件的id属? 注意,这里一定要有name? // $("form").serialize(),表单序列化。指把所有元素的ID,NAME 等全部发过去 dataType : 'content',// 返回值类?一般设置为json,之前是json,但是会出现Uncaught SyntaxError: Unexpected identifier问题,是因为json数据掺杂有其他数? complete : function(data) {// 只要完成即执行,最后执? _preview.removeAttr("style"); refreshReleaseBtn(); }, success : function(data, status) {// 服务器成功响应处理函? if(data.indexOf("<")>0){ //谷歌浏览器返回的json数据还会掺杂一些其他的数据,所以要去除 var end = data.indexOf("<"); data = data.substring(0,end); } var jsonObj = JSON.parse(data); _preview.text(""); if (jsonObj.success) { $("#suifaImage").val(jsonObj.imgName); $("#suifaImage_t").val(jsonObj.imgName_t); img = new Image(); img.src = jsonObj.imgPath + "/" + jsonObj.imgName; img.style.width = _preview.width() + "px"; img.style.height = _preview.height() + "px"; _preview.append(img); } /* * 这里就是做一些其他操作,比如把图片显示到某控件中去之类的?*/ }, error : function(data,status,e) {// 服务器响应失败处理函? _preview.text(""); alert(e); } }); }); } /** * 刷新发布状态,如果没有选择图片或者未输入内容,则禁用发布,反之启? */ function refreshReleaseBtn() { var _btn = $("#btnRelease");// 发布按钮 var _file = $("#suifaImage").val();// 上传成功后的图片名称 var _cur = getByteLen($('textarea#suifaContent').val());// 目前已输入的内容长度 // 如果输入的内容长度超过规定长度,或者未输入内容,则禁用发布按钮? if (_cur == 0 || _cur > _max || _file == "") { _btn.attr({ "disabled" : "disabled" });// 内容长度超出,则禁用发布按钮 _btn.addClass("btn-disabled"); } else { _btn.removeAttr("disabled");// 内容长度未超出,则启用发布按? _btn.removeClass("btn-disabled"); } } /** * 随发内容长度限制? */ function suifaContentLengthLimit() { var _area = $('textarea#suifaContent');// 文本? var _info = $('.suifaTip');// 长度文字提示标签 var _info_length = $('.suifaLengthTip');// 长度数字提示标签 var _val; _area.unbind(); _area.bind('click keyup change', function() { // 绑定keyup和change事件 _val = $(this).val(); var _cur = getByteLen(_val);// 目前已输入的内容长度 if (_cur <= _max) {// 当默认值小于限制数?可输入数为max-cur _info.text("还可以输?); _info_length.css("color", "#777"); _info_length.text(_max - _cur); } else {// 当默认值大于等于限制数? _info.text("已超?); _info_length.text(_cur - _max); _info_length.css("color", "red"); } refreshReleaseBtn(); }); } /** * 回复内容长度限制? */ function replyContentLengthLimit() { var _area = $('textarea#replyContent');// 文本? var _info = $('.replyTip');// 长度文字提示标签 var _info_length = $('.replyLengthTip');// 长度数字提示标签 var _btn = $('#btnReply');// 回复发布按钮 var _val; _area.unbind(); _area.bind('click keyup change', function() { // 绑定keyup和change事件 _val = $(this).val(); var _cur = getByteLen(_val);// 目前已输入的内容长度 if (_cur == 0 || _cur > _max) { _btn.attr({ "disabled" : "disabled" });// 内容长度超出,则禁用发布按钮 _btn.addClass("btn-disabled"); } else { _btn.removeAttr("disabled");// 内容长度未超出,则启用发布按? _btn.removeClass("btn-disabled"); } if (_cur <= _max) {// 当默认值小于限制数?可输入数为max-cur _info.text("还可以输?); _info_length.css("color", "#777"); _info_length.text(_max - _cur); } else {// 当默认值大于等于限制数? _info.text("已超?); _info_length.text(_cur - _max); _info_length.css("color", "red"); } }); } /** * 计算字符串的长度(一个汉?或者中文符?算一个长度,两个字母(或英文符?或数字算一个长度) * * @param val * @returns */ function getByteLen(val) { var len = 0; for (var i = 0; i < val.length; i++) { if (val[i].match(/[^\x00-\xff]/ig) != null) // 全角 len += 1; else len += 0.5; } return Math.ceil(len); }