여러분, 문제가 생겼습니다. 이미지를 클릭하면 텍스트 영역에 스마일 텍스트를 삽입 할 수있는 페이지를 만들었고 제출 버튼을 클릭하면 양식이 ajax 메서드를 통해 제출됩니다. 다음은 매우 잘 작동하는 코드입니다.
<form id="my_form">
<textarea name="comment" id="comment" class="open" placeholder="Comment..."></textarea><br>
<input type="hidden" id="post" name="post" value="<?php echo $my_id; ?>" />
<span id="form_span"><input type="submit" name="submit" id="submit" class="comment_send" value="COMMENT" /></span><div style="display:none;" id="form_progress"><img src='progress-dots.gif' /></div>
<div id="form_error" style="display:none;"><a href="javascript:;" style="float:right;margin:5px 5px;color:#fff;text-decoration:none;" onclick="document.getElementById('form_error').style.display='none'">x</a>Please make a Comment!</div>
<div id="emoji" class="emoji">
<a href="javascript:;" title=":glad;"><img title="glad" border="0" src="emojis/smiley2.png" /></a>
<a href="javascript:;" title=":joy;"><img title="joy" border="0" src="emojis/smiley3.png" /></a>
<a href="javascript:;" title=":jeer;"><img title="jeer" border="0" src="emojis/smiley43.png" /></a>
<a href="javascript:;" title=":angry;"><img title="angry" border="0" src="emojis/smiley76.png" /></a>
</div>
</form>
<script src="js/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#my_form').submit(function(e) {
e.preventDefault();
if($("#comment").val() == "")
{
$('#comment').focus();
document.getElementById('form_error').style.display='block';
} else {
$.ajax({
method: "GET",
url: "comment_send.php",
data: $(this).serialize(),
beforeSend: function(){
document.getElementById('form_error').style.display='none';
document.getElementById('form_progress').style.display='block';
$('#form_span').html("<input type='submit' name='submit' id='submit' class='disable_comment' value='COMMENT' disabled/>");
},
success: function(status) {
$('#comment').val('');
document.getElementById('form_progress').style.display='none';
$('#form_span').html("<input type='submit' name='submit' id='submit' class='comment_send' value='COMMENT' />");
}
});
}
});
});
</script>
//to insert the emoji texts in the text area
<script type="text/javascript">
$('#emoji a').click(function () {
var smiley = $(this).attr('title');
ins2pos(smiley, 'comment');
});
function ins2pos(str, id) {
var TextArea = document.getElementById(id);
var val = TextArea.value;
var before = val.substring(0, TextArea.selectionStart);
var after = val.substring(TextArea.selectionEnd, val.length);
TextArea.value = before + str + after;
setCursor(TextArea, before.length + str.length);
}
function setCursor(elem, pos) {
if (elem.setSelectionRange) {
elem.focus();
elem.setSelectionRange(pos, pos);
} else if (elem.createTextRange) {
var range = elem.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
</script>
또한 jquery .load
함수를 사용 하여 동일한 페이지에 주석을 표시합니다.
<div id="comment_display" style="width:250px;height:500px;overflow-y:auto;"></div>
<script type="text/javascript">
$(document).ready(function() {
setInterval(function () {
$('#comment_display').load('comment_display.php')
}, 1000);
});
</script>
그리고 여기 comment_display.php 페이지가 있습니다 :
<?php
include 'connect.php';
$query = mysqli_query($con, "SELECT * FROM comments ORDER BY id DESC");
while($row = mysqli_fetch_array($query)){
$comment = $row['comment'];
echo "<p>".$comment."</p>";
}
?>
이 모든 코드는 매우 잘 작동하지만 이제 내 문제는 이모티콘 텍스트를 자체 이미지로 표시하고 싶으므로 다음 코드를 사용합니다.
<script type="text/javascript">
// for :glad;
$("body").html($("body").html().replace(/:glad;/g,'<img src="emojis/smiley2.png" />'));
// for :joy;
$("body").html($("body").html().replace(/:joy;/g,'<img src="emojis/smiley3.png" />'));
// for :jeer;
$("body").html($("body").html().replace(/:jeer;/g,'<img src="emojis/smiley43.png" />'));
// for :angry;
$("body").html($("body").html().replace(/:angry;/g,'<img src="emojis/smiley76.png" />'));
</script>
하지만이 마지막 자바 스크립트 코드를 추가하여 이모 지 텍스트를 대체하면 이모 지 텍스트를 텍스트 영역에 삽입하는 이모 지 이미지가 작동을 멈 춥니 다. 클릭해도 아무 작업도 수행되지 않습니다.
한 단어 만 대체하는 작은 데모를 만들었습니다.
$("button").on('click', function() {
var txt = $("textarea").val();
var newtxt=txt.replace(/:glad/g, '<img src="emojis/smiley76.png" />');
$("textarea")[0].innerText=newtxt; //YOU HAVE TO SET NEW TXT IN TEXTAREA
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea cols="5" rows="5">:glad</textarea>
<button>
click
</button>
당신이 $ (body) .html ()을 사용했을 수도 있습니다. 그게 작동하지 않는 이유입니다. 이것은 당신의 대답이 아닐 수도 있지만 당신은 당신의 코드에서 무엇이 빠졌는지 알 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다