删除"表格"标记其内容来自字符串与JavaScript

时间:2018-01-01 13:09:50

标签: javascript jquery regex

我需要从ajax响应内容中删除表单标记。我试过下面的代码,但它没有用。任何帮助,将不胜感激。

new Ajax.Request(
  url, {
    method: "post",
    onSuccess: function (b) {
      var a = $("test");

      a.update(b.responseText.replace("[<](/)?form[^>]*[>]", ""));
  }
});

4 个答案:

答案 0 :(得分:2)

(在此答案中未使用jQuery,因为您问题中的代码显然正在使用PrototypeJS。)

最简单的方法是解析HTML(浏览器很乐意为你做这件事),删除结果中的form元素,然后将其序列化为字符串(如果需要,浏览器是很乐意为你做这件事。)

例如(不使用jQuery):

var div = document.createElement("div");
// This parses it
div.innerHTML = b.responseText;
// Find and remove the first form; tweak the selector to target if necessary
var form = div.querySelector("form");
if (form) {
    form.parentNode.removeChild(form);
}
// Convert back to string if needed
var str = div.innerHTML;

答案 1 :(得分:0)

  

使用javascript

字符串中的内容删除“Form”标记

假设您的意思是删除“表单”标记及其内容来自字符串

如果您使用 jquery ,则可以尝试

var $bResponseText = $( b.responseText );
$bResponseText.find( "form" ).remove();
b.responseText = $bResponseText[0].outerHTML;

在使用update功能

之前

使用 jquery

的其他方法
$("test").append( b.responseText );
$("test").find( "form" ).last().remove();

答案 2 :(得分:0)

您可以使用<form>

简单地替换表单内容

&#13;
&#13;
//detect the form, you can use id or class selector  
var formContent = $('form');
// replace the form with its content so that form tag is removed
formContent.replaceWith(formContent.html());
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id='content'>
  <form>
   <div>Content inside Form</div>
  </form>
</div>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您可以使用以下内容: -

  1. 创建一个临时div: - var tempDiv = document.createElement("div");
  2. 然后将响应指定为innerHTML: - tempDiv.innerHTML = b.responseText;
  3. 在该用户querySelectorAll之后获取来自temp div之上的所有表单元素: - var allForms = tempDiv.querySelectorAll("form");
  4. 然后遍历allForms和user remove()方法逐个删除表单。
  5. 之后使用tempDiv的innerHTML来获取没有表单元素的字符串: - a.update(tempDiv.innerHTML);