2013-11-04 44 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謝謝 –