【问题标题】:How to add multiple values via prompt to textarea without removing and changing other texts?如何通过提示向文本区域添加多个值而不删除和更改其他文本?
【发布时间】:2019-06-02 15:26:07
【问题描述】:

我创造了这个小提琴,让你可以看到我的挣扎。

我的 HTML

<form action="" method="post" role="form" name="my-form-name">

<button class="html-button">Link me</button>

<textarea name="x" id="post-text" rows="17" required="required"></textarea>

<button type="submit" class="submit-button-form">submit form</button>

</form>

JS:

$(".html-button").on("click", function () {
    var urls = prompt("Add a link", "http://");
    var setText = $("#post-text").val(urls);
// Adding prompt text into my input field
    $("#post-text").val(urls);
                            });

此代码有效,但仅有效一次。含义:如果我添加一个超链接,它第一次可以工作,但是当我想添加 another 链接时,它不会插入它。相反,它只是改变了我首先输入的内容 + 我添加到 textarea 的附加纯文本。

我的问题:我怎样才能使这个链接添加独立于我在 textarea 中输入的内容(纯文本),并确保我可以添加更多链接而不改变 textarea 中的其他链接?

小提琴:https://jsfiddle.net/vaxqsztj/1/

【问题讨论】:

    标签: javascript jquery html prompt


    【解决方案1】:

    你需要追加数据而不是替换

    $("#post-text").val(urls);   <-- here you're replacing data with url only
    

    相反,您需要在 url 中添加以前的文本

    var setText = $("#post-text").val(urls);
    $("#post-text").val(setText + urls);   <-- adding url along with previous value
    

    $(".html-button").on("click", function() {
      var urls = prompt("Add a link", "http://");
      var setText = $("#post-text").val();
      // Adding prompt text into my input field
      $("#post-text").val(setText + urls);
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <form action="" method="post" role="form" name="my-form-name">
      <button class="html-button" type='button'>Link me</button>
      <textarea name="x" id="post-text" rows="17" required="required"></textarea>
      <button type="submit" class="submit-button-form">submit form</button>
    </form>

    【讨论】:

    • 部分有效。问题是:现在它在提示中点击“确定”按钮后直接提交表单......这是我们可以解决的问题吗?
    • 改写:它只在显示提示时按回车后提交表单......我们可以解决这个问题吗?
    • @Siyah 但在你的小提琴中根本没有form 标签?
    • 是的,所以也许我不够清楚。 textarea 是表单的一部分。我将编辑我的 HTML,以便您明白我的意思。我不认为这会是一个问题,所以这就是原因。给您带来的不便深表歉意!
    • @Siyah 你需要给按钮添加类型属性来停止自动提交,检查更新的代码
    【解决方案2】:

    问题是您正在使用当前提示值重置以下行中 textarea 的值:

    var setText = $("#post-text").val(urls);
    

    您可以使用 jQuery 的 .append() 在 textarea 中插入内容。

    您可以删除它并在每次点击时添加换行符 (\n) 以将每个链接显示在单独的行中,如下所示:

    $(".html-button").on("click", function () {
      var urls = prompt("Add a link", "http://");
      $("#post-text").append(urls + '\n');
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <button class="html-button">Link me</button>
    
    <textarea name="x" id="post-text" rows="17" required="required"></textarea>

    【讨论】:

    • 这里有同样的问题。它在一定程度上起作用;在出现提示时按 Enter 键时,它会继续提交表单。我们可以防止这种情况发生吗?
    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 2011-12-08
    • 1970-01-01
    • 2013-04-28
    • 2021-01-02
    相关资源
    最近更新 更多