312 html standards-compliance web-standards
是否有效的html具有以下内容:
<form action="a">
<input.../>
<form action="b">
<input.../>
<input.../>
<input.../>
</form>
<input.../>
</form>
Run Code Online (Sandbox Code Playgroud)
因此,当您提交"b"时,您只能获得内部表单中的字段.当您提交"a"时,您将获得所有字段减去"b"中的字段.
如果不可能,这种情况有哪些变通方法?
Gen*_*neQ 361
答:它不是有效的HTML也不是XHTML
在官方的W3C XHTML规范中,B节"元素禁止"声明:
"form must not contain other form elements."
Run Code Online (Sandbox Code Playgroud)
http://www.w3.org/TR/xhtml1/#prohibitions
至于旧的HTML 3.2规范,FORMS元素的部分说明:
"每个表单都必须包含在FORM元素中.单个文档中可以有多个表单,但FORM元素不能嵌套."
B. 解决方法
有一些使用JavaScript的解决方法,无需嵌套表单标记.
"如何创建嵌套表单." (尽管标题不是嵌套的表单标签,但是JavaScript解决方法).
注意: 虽然可以通过脚本操纵DOM来欺骗W3C Validators传递页面,但它仍然不是合法的HTML.使用此类方法的问题在于,现在无法跨浏览器保证代码的行为.(因为它不标准)
And*_*eas 48
如果有人在这里找到这篇文章是一个很好的解决方案,而不需要JS.使用具有不同名称属性的两个提交按钮检查您的服务器语言,其中按下了提交按钮,因为其中只有一个将被发送到服务器.
<form method="post" action="ServerFileToExecute.php">
<input type="submit" name="save" value="Click here to save" />
<input type="submit" name="delete" value="Click here to delete" />
</form>
Run Code Online (Sandbox Code Playgroud)
如果你使用php,服务器端可能看起来像这样:
<?php
if(isset($_POST['save']))
echo "Stored!";
else if(isset($_POST['delete']))
echo "Deleted!";
else
echo "Action is missing!";
?>
Run Code Online (Sandbox Code Playgroud)
Nis*_*shi 25
HTML 4.x和HTML5禁止嵌套表单,但HTML5将允许使用"表单"属性("表单所有者")的变通方法.
对于HTML 4.x,您可以:
use*_*075 13
正如其他人所说,它不是有效的HTML.
这听起来像是你这样做是为了将形式在视觉上彼此定位.如果是这种情况,只需做两个单独的表单并使用CSS来定位它们.
而是在表单的action属性中使用自定义javascript方法!
例如
<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>
Run Code Online (Sandbox Code Playgroud)
一种可能性是在外部形式中有一个iframe.iframe包含内部表单.确保使用<base target="_parent" />
iframe的head标记内的标记使表单作为主页的一部分.
归档时间: |
|
查看次数: |
222771 次 |
最近记录: |