如何将文本追加到HTML输入表单?

6
我已经创建了一个基本的HTML输入表单,但想要在用户输入的文本后面添加一些文本,这该怎么做呢?
<form action="https://api.hipchat.com/v1/rooms/message" method="get" target="">
  <input type="hidden" name="room_id" value="example">
  <input type="hidden" name="from" value="example">
  <input type="hidden" name="color" value="example">
  <input type="hidden" name="notify" value="example">
  <input type="hidden" name="auth_token" value="example">

  Message: <input type="text" name="message"><br>
  <input type="submit" value="Submit">
</form>

我希望从用户那里获取一些输入,然后将其发布到HipChat房间。所有这些都可以正常工作。但我想在消息之前添加"@Lewis",以便在HipChat上收到提及。是否可以像这样做:

value="@Lewis" + "Submit"

谢谢!

你用什么来提交表单?你需要使用它来追加数据。 - codedude
我只是使用一个基本的HTML页面和一个按钮。这就是你的意思吗?@codedude - Lewis Lebentz
仅使用HTML会很困难。您可以使用隐藏字段,但需要在接收端进行解析。另一个选择是JavaScript。 - Mackan
2个回答

4

不需要为此请求添加jQuery。一小段JavaScript代码就可以很好地完成,并且更加轻量级。但是,如果您计划使用大量JavaScript,您可能需要开始了解jQuery。

<form id="myForm" action="https://api.hipchat.com/v1/rooms/message" method="get" target="">
  <input type="hidden" name="room_id" value="example">
  <input type="hidden" name="from" value="example">
  <input type="hidden" name="color" value="example">
  <input type="hidden" name="notify" value="example">
  <input type="hidden" name="auth_token" value="example">Message:
  <input type="text" name="message" id="myMessage">
  <br>
  <input type="submit" value="Submit">
</form>

<script type="text/javascript">
  window.onload = function() {
    document.getElementById("myForm").onsubmit = function() {
      var msgElement = document.getElementById("myMessage");
      msgElement.value = '@Lewis: ' + msgElement.value;
      alert(msgElement.value); //comment/remove this line
      return true;
    };
  };
</script>

请注意,我在表单和消息元素中添加了id

非常感谢您的帮助!这只是一个基本表单,所以JavaScript就足够了。尽管我还是有点困惑,即使我已经输入了表单ID,它似乎仍然没有将其添加到URL中。这很奇怪,因为警报起作用了?我需要更改“myMessage”吗?编辑:刚才看到消息上的ID字段,现在正在更改! - Lewis Lebentz
@Lewis 我已经给表单和消息输入框添加了一个ID。 它们必须存在,因为它们用于通过JavaScript查找元素。 - Mackan
非常好,谢谢!最后一个问题是,我该如何使提交按钮不打开新页面?它会带我到一个丑陋的HipChat页面来确认消息已发送。我更喜欢使用JavaScript弹出窗口或其他方式来防止页面改变。我尝试将目标更改为iframe,但似乎仍然会打开新页面? - Lewis Lebentz
@Lewis,你所发布的代码中没有任何东西会导致新窗口弹出,因此它必须是post请求的接收者。你可以使用ajax来发送请求(静默地,不进行重定向),但你需要提出一个新问题或在SO/Google上搜索(有很多相关问题和指南),因为这不在你当前问题的范围内。很高兴它对你有用。 - Mackan
是的,我同意。如果这是你要用JavaScript做的唯一事情,最好不要使用jQuery。 - Koen Peters
我只是想插一句话,说一下JavaScript似乎是解决这些小问题的解决方案。在简单的表单标签足以满足需求的情况下,想象一下如果你能够在HTML中将前缀和后缀结合到文本字段中。 - undefined

1
你可以使用JavaScript实现此操作。添加一个提交处理程序,并在消息开头添加所需的文本。以下是使用jQuery的示例:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js">   </script>
<script>
  $(function() {
    $('form').submit(function() {
      var $m = $(this).find('[name=message]');
      $m.val('@Lewis ' + $m.val();
    });
  });
</script>

谢谢你的回答。我是初学者,如何添加提交处理程序?我该如何将jQuery整合到表单中? - Lewis Lebentz
你只需要做的就是引入jQuery库并将上面的代码放在script标签中即可。就这样。我已经调整了代码,所以你可以将其复制粘贴到你的页面中。 - Koen Peters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接