2011-08-24 226 views
1

我正在制作一个使用CGI脚本的网页,它具有用户需要填写的表单。总体布局是:HTML嵌套表单问题

<form> 
textfield (username) 
textfield (password) 
textfield (email) 
submit button 
</form> 

我想要做的是添加一个按钮,检查他们输入的用户名是否可用。我的问题是我想要这样做的方式是通过书写:

<form> 
<form> 
textfield (username) 
submit button 
</form> 
textfield (password) 
textfield (email) 
submit button 
</form> 

这不起作用,提交按钮改为提交外部表单。以下是我考虑尝试但未运作的内容:

  1. 将表格放在第一个表格的末尾。问题:我不知道如何将用户名文本字段按钮旁边的“验证”按钮对齐,而不会使其浮动,这会导致页面出现一系列其他问题。

  2. 在提交按钮上添加值,并使提交根据单击哪个按钮做不同的事情。问题:基于哪个按钮被按下,我想要发出“POST”请求的网页是不同的。看到我将action =“mypage.cgi”放在代码的一部分中,而不是按钮部分,我不知道如何根据按下哪个按钮将它放到不同的站点。

+0

只是为了让你知道(因为没有人提到过)嵌套表单在HTML中是被禁止的,它们的行为是未定义的,所以它们甚至不能保证在不同的浏览器中工作相同。 – mpeters

回答

3

首先给所有表单名称是个好主意。
所以你可以很容易地区分形式。

接下来,将onClick连接到每个将使用不同参数调用函数的按钮:1,2,3。每个按钮都会发送自己的参数。在函数中,您只需查看参数并提交approplaite表单即可。

<form name='form1'> 
.... 
<button type="button" onClick=doIt(1);>Submit</button> 
</form> 

<form name='form2'> 
.... 
<button type="button" onClick=doIt(2);>Submit</button> 
</form> 

<form name='form3'> 
.... 
<button type="button" onClick=doIt(3);>Submit</button> 
</form> 

<script> 
function doIt(formid) 
{ 
    if(formid==1) 
    { 
     document.form1.submit(); 
    } 
    if(formid==2) 
    { 
     document.form2.submit(); 
    } 

... 
} 
</script> 
3

有多个不同名称的提交按钮。检查每个帖子后面。

+0

我将这个解决方案的问题发布为#2 – WillHaack

+0

您可以检测到JavaScript中单击了哪个按钮,然后基于此更改操作属性。这是我从混乱中看到的唯一方式。 –

0

您可能需要制作两种不同的表单动作,以便您不要提交两个完全不同的值。

+0

如何制作两种不同的表单操作? – WillHaack

+0

您首先创建一个:

然后放入您的第一个文本框。 然后你可以制作另一个完全喜欢它的,具有不同形式的动作,并且你将有两个不同的POSTS,具有不同的值。 – NorS