Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery在输入字段/文本区域的特定位置插入/删除文本_Javascript_Php_Jquery_Html - Fatal编程技术网

Javascript jQuery在输入字段/文本区域的特定位置插入/删除文本

Javascript jQuery在输入字段/文本区域的特定位置插入/删除文本,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我正在尝试做类似的事情,就像YouTube一样,当你嵌入一个视频,你想得到一个代码。您可以单击复选框或选择大小,它会动态更改输入字段的值 有人知道怎么做吗 我成功地编写了一个正确替换宽度的代码,但我不知道如何生成一个代码,在链接末尾添加&scheme=XXX,或者在用户未选择颜色方案时删除它 这是宽度的代码,我不认为它是最好的,但很有效: 下面是我试图更改的文本区域和我正在使用的输入: ID取自PHP,在jQuery看到的实际文本区域中,.$ID.是实际数字 当用户未选择任何方案或从XXX更改为

我正在尝试做类似的事情,就像YouTube一样,当你嵌入一个视频,你想得到一个代码。您可以单击复选框或选择大小,它会动态更改输入字段的值

有人知道怎么做吗

我成功地编写了一个正确替换宽度的代码,但我不知道如何生成一个代码,在链接末尾添加&scheme=XXX,或者在用户未选择颜色方案时删除它

这是宽度的代码,我不认为它是最好的,但很有效:

下面是我试图更改的文本区域和我正在使用的输入:

ID取自PHP,在jQuery看到的实际文本区域中,.$ID.是实际数字

当用户未选择任何方案或从XXX更改为无时,我希望textarea iframes src中的链接如下:

但当他选择任何方案时,我希望它是这样的:

我真的不知道怎么做。我用谷歌搜索了一个多小时,但我不知道ID是什么来标识添加字符串的位置,这是PHP值,我无法将其传递到外部脚本文件,所以我试图找到是否可以在特定位置插入内容,例如:从JS开始的第15个字符,但找不到任何内容


谢谢。

为了保持代码的整洁,我分离了一些函数。检查一下,我想这就是您想要的


我删除了第一个选项的值“-”,将其保留为空。

为了保持代码整洁,我分离了一些函数。检查一下,我想这就是您想要的



我删除了第一个选项的值“-”,将其保留为空。

您试图更改的宽度是iframe的宽度?宽度是可以的,我在那里发布了一个代码,可以工作,但如果有人知道如何改进,我并不反对。但是我需要的是改变文本区域中的链接。你试图改变的宽度是iframe的宽度?宽度是可以的,我在那里发布了一个有效的代码,但是如果有人知道如何改进,我并不反对。但是我需要的是改变文本区域中的链接。你试图改变的宽度是iframe的宽度?宽度是可以的,我在那里发布了一个有效的代码,但是如果有人知道如何改进,我并不反对。但我需要的是改变文本区的链接。在url中,你忘记了,我不知道ID,不能硬编码到脚本中。。。另外,最后一部分应该有所不同。宽度仅适用于。方案应该有$schemes.changefunction{do stuff};你在哪里有身份证?也许你可以把它存储到一个隐藏的输入或类似的东西中,然后用val函数把它取出来。我真的不想这样做。我只想更改textarea中的值,而不在脚本中使用任何硬编码的值,比如baseUrl或ID。有什么方法不需要在JS中硬编码URL?我讨厌在不同的地方换同样的东西。我认为对getId函数稍加修改即可删除参数。如果你能告诉我,我会非常感激的。Ps:你为什么把函数设为变量?你会用同样的方式称呼他们,所以我看不出有什么不同。现在检查一下回复,没有那种核心url。您可以在变量中声明函数。我喜欢的方式很简单。你不必修改代码来让它工作。在url中你忘记了,我不知道ID,不能硬编码到脚本中。。。另外,最后一部分应该有所不同。宽度仅适用于。方案应该有$schemes.changefunction{do stuff};你在哪里有身份证?也许你可以把它存储到一个隐藏的输入或类似的东西中,然后用val函数把它取出来。我真的不想这样做。我只想更改textarea中的值,而不在脚本中使用任何硬编码的值,比如baseUrl或ID。有什么方法不需要在JS中硬编码URL?我讨厌在不同的地方换同样的东西。我认为对getId函数稍加修改即可删除参数。如果你能告诉我,我会非常感激的。Ps:你为什么把函数设为变量?你会用同样的方式称呼他们,所以我看不出有什么不同。现在检查一下回复,没有那种核心url。您可以在变量中声明函数。我喜欢的方式很简单。你不必修改代码来让它工作。在url中你忘记了,我不知道ID,不能硬编码到脚本中。。。另外,最后一部分应该有所不同。宽度仅适用于。方案应该有$schemes.changefunction{do stuff};你在哪里有身份证?也许你可以把它存储到一个隐藏的输入或类似的东西中,然后用val函数把它取出来。我真的不想这样做。我只想更改textarea中的值,而不需要任何硬代码
在脚本中编辑baseUrl或ID之类的值。有没有不需要在JS中硬编码URL的方法?我讨厌在不同的地方换同样的东西。我认为对getId函数稍加修改即可删除参数。如果你能告诉我,我会非常感激的。Ps:你为什么把函数设为变量?你会用同样的方式称呼他们,所以我看不出有什么不同。现在检查一下回复,没有那种核心url。您可以在变量中声明函数。我喜欢的方式很简单。您不必为了使代码正常工作而修改代码。
$("#width").on("change keyup", function(){
    var width = $(this).val();
    if (width){
        $("#embed-text").val($("#embed-text").val().replace(/ (width\s*=\s*["'])[0-9]+(["'])/ig, ' width=\''+width+'\''));
    }
});
<textarea class='clean' id='embed-text'><iframe src='http://my.url/embed/?r=".$id."' width='600' height='".$height."' frameborder='0' marginwidth='0' marginheight='0' allowtransparency='true'></iframe></textarea>

<div style='padding-right: 10px; display: inline-block;'>
    Color scheme: 
    <select id='schemes' class='clean'>
        <option value='-'>None</option>
        <option value='xxx'>Xxx</option>
    </select>
</div>
<div style='padding-right: 10px; display: inline-block;'>
    Width: <input type='number' min='250' max='725' value='600' id='width' class='clean'>
</div>
var generateUrl = function(id,colorScheme) {
    var baseUrl = "http://my.url/embed/?";
    var url = baseUrl.concat("r="+id);

    if (colorScheme != null && colorScheme != '')
        url = url.concat("&scheme="+colorScheme);

    return url;
};

var changeUrl = function(id, colorScheme) {
    var url = generateUrl(id, colorScheme);
    var srcPattern = "src='(.*?)'";
    var embedText = $("#embed-text").val();
    var newEmbedText = embedText.replace(new RegExp(srcPattern),"src='"+url+"'");
    $("#embed-text").val(newEmbedText);

};


var changeWidth = function(newWidth) {
    var widthPattern = "width='([0-9]*)'";
    var embedText = $("#embed-text").val();
    var newEmbedText = embedText.replace(new RegExp(widthPattern),"width='"+newWidth+"'");
    $("#embed-text").val(newEmbedText);
};

var getURLParameter = function(url,parameterName) {
  return decodeURIComponent((new RegExp('[?|&]' + parameterName + '=' + '([^&;]+?)(&|#|;|$)').exec(url)||[,""])[1].replace(/\+/g, '%20'))||null
};

var getId = function() {
    var urlPattern = "src='(.*?)'";
    var embedText = $("#embed-text").val();
    var url = embedText.match(new RegExp(urlPattern))[1];
    var id = getURLParameter(url, 'r');
    return id;
};

$("#width").on("change keyup", function(){
    var width = $(this).val();
    var colorScheme = $(schemes).val();

    changeWidth(width);
    changeUrl(getId(),colorScheme);
});