我正在创建一个链接共享,在特定textarea的bind()事件上(我粘贴链接)它会进行$.post
ajax回调和预览(如果是youtube或vimeo链接)。
基本上,每次检测到链接并获得预览时,我都会删除链接到textarea。
这是执行回调的函数:
$('#writer').bind('change keypress keyup keydown',function() {
var value_= $('#writer').val();
$('#thumb-temp').hide();
$.post( 'checklink.php?', { string : value_ },
function(response) {
$('.writer').prepend(response);
$('#thumb-temp').show();
}).fail(function() { alert( "error" ) })
});
以及应删除链接的页面 checklink.php
<?
$link = $_POST['string'];
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
preg_match($reg_exUrl, $link, $url);
$link = $url[0];
?>
<script>clearTextarea('<? echo $link ?>')</script>
最后是clearTextarea()函数
function clearTextarea(url) {
var _textarea = $('#writer');
var _curVal = _textarea.val();
var _curUrl = url;
var _regex = new RegExp( _curUrl , 'g' );
var _newVal = _curVal.replace( _regex , '' );
_textarea.val( _newVal );
}
现在,显然,这应该有效但没有任何反应,任何想法?我不明白我错在哪里:(
答案 0 :(得分:0)
我不确定你是否可以用这种方式运行javascript(从PHP回复)。我会直接从$ .post中调用它。
答案 1 :(得分:0)
首先,我建议你不要多次发送ajax。
Regex基本上也是你在JS中可以做的。因此,不要发送ajax - 检查JS代码中的链接。
其次,如果您想更改textarea的值,则应使用html()
代替val()
。
答案 2 :(得分:0)
订单应该是,
<script type="text/javascript">
function clearTextarea(url) {
var _textarea = $('#writer');
var _curVal = _textarea.val();
var _curUrl = url;
var _regex = new RegExp( _curUrl , 'g' );
var _newVal = _curVal.replace( _regex , '' );
_textarea.val( url );
}
</script>
HTML中的Textarea:
<textarea id="writer"></textarea>
PHP代码
<?php
$link = $_POST['string'];
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
preg_match($reg_exUrl, $link, $url);
$link = $url[0];
?>
调用clearTextarea函数();
<script>clearTextarea('<?php echo $link ?>');</script>
答案 3 :(得分:0)
function clearTextarea() {
var _textarea = $('#writer');
var _curVal = _textarea.val();
var _curUrl = _curVal.match(/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/gi);
var _newVal = _curVal.replace( _curUrl , '' );
_textarea.val(_newVal);
}
并在ajax完成时调用clearTextarea()。 就是这样; D