textarea val()使用jquery编辑和删除字符串

时间:2013-11-04 13:44:58

标签: javascript php jquery html ajax

我正在创建一个链接共享,在特定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 );
}

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

4 个答案:

答案 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