以下是有效的html:
<form action="a">
<input.../>
<form action="b">
<input.../>
<input.../>
<input.../>
</form>
<input.../>
</form>
当你提交b时,你只能得到内部表单中的字段。当你提交“a”时,你会得到所有字段减去“b”内的字段。
如果不可能,对于这种情况有什么可行的变通办法?
以下是有效的html:
<form action="a">
<input.../>
<form action="b">
<input.../>
<input.../>
<input.../>
</form>
<input.../>
</form>
当你提交b时,你只能得到内部表单中的字段。当你提交“a”时,你会得到所有字段减去“b”内的字段。
如果不可能,对于这种情况有什么可行的变通办法?
当前回答
而是在表单的action属性中使用自定义javascript方法!
eg
<html>
<head>
<script language="javascript" type="text/javascript">
var input1 = null;
var input2 = null;
function InitInputs() {
if (input1 == null) {
input1 = document.getElementById("input1");
}
if (input2 == null) {
input2 = document.getElementById("input2");
}
if (input1 == null) {
alert("input1 missing");
}
if (input2 == null) {
alert("input2 missing");
}
}
function myMethod1() {
InitInputs();
alert(input1.value + " " + input2.value);
}
function myMethod2() {
InitInputs();
alert(input1.value);
}
</script>
</head>
<body>
<form action="javascript:myMethod1();">
<input id="input1" type="text" />
<input id="input2" type="text" />
<input type="button" onclick="myMethod2()" value="myMethod2"/>
<input type="submit" value="myMethod1" />
</form>
</body>
</html>
其他回答
而是在表单的action属性中使用自定义javascript方法!
eg
<html>
<head>
<script language="javascript" type="text/javascript">
var input1 = null;
var input2 = null;
function InitInputs() {
if (input1 == null) {
input1 = document.getElementById("input1");
}
if (input2 == null) {
input2 = document.getElementById("input2");
}
if (input1 == null) {
alert("input1 missing");
}
if (input2 == null) {
alert("input2 missing");
}
}
function myMethod1() {
InitInputs();
alert(input1.value + " " + input2.value);
}
function myMethod2() {
InitInputs();
alert(input1.value);
}
</script>
</head>
<body>
<form action="javascript:myMethod1();">
<input id="input1" type="text" />
<input id="input2" type="text" />
<input type="button" onclick="myMethod2()" value="myMethod2"/>
<input type="submit" value="myMethod1" />
</form>
</body>
</html>
嵌套表单标签的非javascript解决方案:
因为你考虑到了
所有字段减去“b”以内的字段。
当提交"a"时,以下将工作,使用常规的web表单而没有花哨的JavaScript技巧:
步骤1。把每个表单放在自己的网页上。
步骤2。在您希望此子表单出现的任何位置插入iframe。
步骤3。利润。
我尝试使用一个代码游乐场网站来展示演示,但许多网站禁止在iframe中嵌入网站,即使是在他们自己的域内。
您正在尝试实现HTML中不支持的嵌套表单。
每个表单都必须包含在form元素中。有可能 在一个文档中包含多个表单,但是FORM元素不能 嵌套。
解决方案
您可以通过对HTML和JavaScript进行一些更改来实现此功能。(不使用HTML表单)
步骤 1. 用div标签创建两个表单,如下所示(不使用表单标签)
<div id="form_a">
<input.../>
<div id="form_b">
<input.../>
<input.../>
<button id="submit_b">Submit B</button>
</div>
<input.../>
<button id="submit_a">Submit A</button>
</div >
2. 添加JQuery和Ajax来提交每个表单数据
<script>
// Submit form A data
$('#submit_a').click( function() {
$.ajax({
url: 'ajax-url',
type: 'post',
dataType: 'json',
data: $('#form_a input').not( "#form_b input" ).serialize(),
success: function(data) {
// ... do something with the data...
}
});
});
// Submit form B data
$('#submit_b').click( function() {
$.ajax({
url: 'ajax-url',
type: 'post',
dataType: 'json',
data: $('#form_b input').serialize(),
success: function(data) {
// ... do something with the data...
}
});
});
</script>
不, 看到w3c
通过将HTML代码输入W3 Validator,您可以非常容易地回答自己的问题。(它有一个文本输入域,你甚至不需要把你的代码放在服务器上…)
(不,它不会生效。)