2013-11-04 46 views
0

我创建一个链接共享删除字符串上bind()的一个特定的textarea的事件(其中i贴链接),它确实有一个预览的$.post Ajax回调(在YouTube上的情况下,或vimeo链接)。 基本上,我会删除链接到textarea每次检测到链接并获得预览。textarea的VAL()编辑和使用jQuery

这是做回调函数:

$('#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

Jsfiddle会有帮助... –

回答

0

我不知道你是否能运行JavaScript这样(从PHP呼应)。我想从$。员额直接调用它。

+0

你可以,但它将不得不被请求使用“脚本”数据类型和脚本标签将不得不被删除。 –

0

首先所以,我建议你不要发送ajax这么多次 正则表达式基本上就是你在JS中可以做到的,所以不要发送一个jax - 检查你的JS代码中的链接 其次,如果你想改变textarea的价值,你应该使用html(),而不是val()

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> 

textarea的HTML:

<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> 
+0

究竟......为什么它不起作用的任何想法? –

+0

由于加载行为,你被调用clearTextarea函数之前,它被加载,这就是为什么 –

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); 
} 

,并呼吁阿贾克斯完全clearTextarea()。 就是这样; D

+0

这正是我在我的回答中对你说的... –

+0

我知道它:D谢谢 –