0

我正在创建一个链接,在特定文本区域(我粘贴链接的位置)的 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 );
}

现在,显然,这应该有效,但没有任何反应,有什么想法吗?我不明白我错在哪里:(

4

4 回答 4

0

首先,我会建议你不要多次发送ajax。正则表达式基本上也是您可以在 JS 中执行的操作。因此,不要发送 ajax - 检查 JS 代码中的链接。其次,如果要更改 textarea 的值,应该使用html()而不是val().

于 2013-11-04T13:53:54.447 回答
0

我不确定您是否可以以这种方式运行 javascript(与 PHP 相呼应)。我会直接从 $.post 调用它。

于 2013-11-04T13:51:44.170 回答
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 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>
于 2013-11-04T14:01:22.880 回答
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

于 2013-11-04T14:31:40.580 回答