【发布时间】:2009-11-04 19:53:54
【问题描述】:
我目前正在解决一个问题,该问题主要涉及处理表单中的所有数据,保存它,并用文本链接替换整个表单。我的主要目标是使用 POST 方法和提交按钮将带有一些数据的表单转换为标准文本链接,然后该链接可以获取保存/序列化的数据并将其 POST 到服务器,就好像它是原始表单一样;当 JS 被禁用时,会出现标准的表单和提交按钮,即优雅的降级。我目前正在使用 jQuery,我知道可以通过序列化来处理表单数据,但是我不确定如何完全删除或隐藏(无论哪种方式)一个表单,因此它不会干扰布局周围的 HTML 元素。
总结:
-是否可以使用 jQuery 移除或隐藏整个表单域?
-jQuery序列化表单数据时,保存到哪里?
-是否可以通过文本链接(即<a href="mySavedData">Submit</a>")以某种方式引用保存的数据并像标准表单一样发布?
谢谢。
更新:好的,我在一个单独的 JS 文件中实现了 Franz 的代码,我从我的 test.html 页面调用。 JS文件内容如下:
$(document).ready(function() {
//Store form data before removing
var tempStorage = $('.postLink').serialize();
// Remove form:
$('.postLink').remove();
//Assign onClick event to anchor tag
$('.submit').click(function(){
$.ajax({
//aspx page
url:"doSomethingImportant/10",
//Using POST method
type: "POST",
//The data object
data: tempStorage,
//No caching
cache: false,
//Alert on success
success: function(html) {
alert('great');
}
});
});
});
这里唯一的区别是我使用 class 属性作为我想要删除的表单的标识符,而不是 id。同样,这是我的任务,而不是选择。但是,由于某种原因,它没有出现在警报消息中,即它不起作用。下面是我正在执行脚本的 html 的 sn-p:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<style type="text/css">
h1.intro {color:blue;}
p.important {color:green;}
h2.outro {color:DarkGreen;}
</style>
<script type="text/javascript" src="jQuery/jquery-1.3.2.js"></script>
<script type="text/javascript" src="Form2Link.js"></script>
<title>Form Remover demo</title>
</head>
<body>
<h1 class="intro">Hello World!!</h1>
<p>How's it going??</p>
<a href="">my First Link</a>
<form id = "myForm" name="myForm" action="doSomethingImportant/10" class="postLink" method="post">
<input type="submit" id="submitThis" name="submitThis" value="clickThisLink"></input>
<input type="hidden" id="antiCSRF" name="antiCSRF" value="12345"></input>
</form>
<a class="submit" href="">Submit Link</a>
<a href="">my Second Link</a>
<a href="">my Third Link</a>
<br>
<br>
<form action="doSomethingImportant/10" method="post">
<input type="submit" id="submitThis" value="clickThisLink"></input>
<input type="hidden" value="12345" name="antiCSRF"></input>
</form>
<form action="doSomethingImportant/11" method="post">
<input type="submit" value="clickThisLink"></input>
<input type="hidden" value="12345" name="antiCSRF"></input>
</form>
<h2 class="outro">That's nice, gotta go.</h2>
</body>
</html>
2009 年 11 月 10 日更新: 好的,我找到了解决此问题的另一种方法,即隐藏表单并在表单后立即添加锚标记。然后,我将单击操作附加到作用于隐藏表单中的提交按钮的锚点。我现在的问题是这只适用于 DOM 中定义的一种形式,我想提出这个函数的概括,以便它适用于多种形式。如何遍历每个表单并将其替换为自己的唯一链接?
我当前脚本的代码:
/**
* Hide forms on page load.
* Call submit button within a form from a link
*/
$(document).ready(function() {
//Hide form:
$('.postLink').hide();
//Append a anchor tag after each form that is replaced
$('.postLink').after("<a class=\"submitLink\" href=\"#\">Submit Link</a>");
//Submit button in hidden form
$('.submitLink').click(function(){
$('#myForm').find('input#submitThis').click();
return false;
});
});
【问题讨论】:
标签: javascript jquery html xhtml