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


textarea val() edit and remove string with jquery

我正在创建一个链接共享,该链接共享在特定文本区域的bind()事件(我粘贴链接的地方)上,它会执行带有预览的$.post ajax回调(如果是YouTube或Vimeo链接)。基本上,每次检测到链接并获得预览时,我都会删除文本区域中的链接。

这是执行回调的函数:

    $('#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" ) })
});

和页面检查链接.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 );
}

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

我不确定你是否可以以这种方式运行javascript(从PHP回显)。我会直接从 $.post 调用它。

首先,我建议你不要发送这么多次 ajax。正则表达式基本上也是你可以在JS中做的事情。因此,与其发送 ajax - 请检查 JS 代码中的链接。其次,如果要更改文本区域的值,则应使用html()而不是val()

顺序应该是,

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

我用这种方式解决了

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 complete 上调用 clearTextarea()。就是这样;D