2010-09-05 131 views
0

我有一个字段集,里面有一个表单。这是行不通的 。我的意思是说。当我看到使用萤火虫的标签时,窗体标签将不会出现在所有的地方..如何让你克服它。html表单在fieldsets中不起作用

这是代码如何去......它的一个PHP代码..

<div id="dialog-form_surg_couns" title=" Surgical Counselling"> 

<?php 
$surgCount = 0; 
foreach($this->surgery as $surgery) { 
$surgCount++; 
$newId = str_replace(' ','',$surgery->getSurgeryname()); 
?> 
    <div class='fieldreq1Pct'> 
     <div class='fieldItemLabel'> 
       <label for=''><?php echo $surgery->getSurgeryname() ?></label> 
     </div> 
     <div class='fieldItemValue'> 
       <input type='checkbox' class='surg_couns_tests' id="<?php echo $newId ?>" name='surg_couns_tests' value="<?php echo $surgery->getSurgeryname() ?>" <?php echo (($showValue && strstr($visitRecord->getSurgcounstests(),$surgery->getSurgeryname())) ? 'checked' : ""); ?> onClick="javascript:showBlock(this.id);"> 
     </div> 
    </div> 
<?php 
if(($surgCount % 3) == 0) 
{ 
?> 
       <div class='clear'></div> 
<?php 
} 
} 
?> 
       <div class='clear'></div> 
<hr/> 
<?php 
foreach($this->surgery as $surgery) { 
$newId = str_replace(' ','',$surgery->getSurgeryname()); 
$fieldCount = 0; 
?> 
<div id='<?php echo $newId ?>_block' style='display:none;' class='check_block'> 
<form method='POST' action ='' id ='<?php echo $newId ?>_form'> 
<table border='0' class='surg_table'> 
<?php 
foreach($this->surgeryTemplate as $surgerytemplate) { 
if($surgery->getSurgeryid() == $surgerytemplate->getSurgeryid()) 
{ 
$fieldCount++; 
$fieldName  = 'field'.$fieldCount; 
$fieldId  = $surgerytemplate->getFieldid(); 
if($surgerytemplate->getRequired() == 'Y') 
{ 
$required = 'required'; 
} 
else 
{ 
$required = ''; 
} 
if($surgerytemplate->getType() == 'AN') 
{ 
$validation = 'alpha'; 
} 
else 
{ 
$validation = ''; 
} 

?> 
<tr> 
<td> 
<?php echo $surgerytemplate->getFieldname(); ?> 
</td> 
<td> 
<?php 
if($surgerytemplate->getType() == 'B') 
{ 
echo '<input type=\'radio\' name=\''.$fieldName.'\' value=\'Yes\'>Yes'; 
echo '<input type=\'radio\' name=\''.$fieldName.'\' value=\'No\'>No'; 
} 
else 
{ 
echo '<input type=\'text\' name=\''.$fieldName.'\' id=\''.$fieldName.'\' class=\''.$required.' '.$validation.'\' onblur="checkValid(this.id)"><div id=\''.$fieldName.'error\'></div>'; 
} 
?> 
</td> 
</tr> 
<?php 
} 
} 
?> 
</table> 
<center><input type='button' name='submit' value='submit' onclick='javascript:submitSurgeryForm("<?php echo $newId ?>")'></center> 
</form> 
</div> 
<?php 
} 
?> 
</div> 
+3

向我们展示你的代码! – adamse 2010-09-05 15:59:18

+0

您使用字段集的方式是错误的,因为字段集旨在用于表单内部,用于表单元素的逻辑分组,而不是其他方式。 – 2010-09-05 16:20:03

+0

@FreekOne - 我已经改变了我的代码...但是窗体tage仅用于第二个循环。第一个循环的表单标签不会来...代码中的任何问题? – Hacker 2010-09-05 16:35:28

回答

1

你不能有另一种形式的内form标签。下面的HTML是无效的:

<form> 
    <fieldset> 
    <form> 
     <input> 
    </form> 
    </fieldset> 
</form> 

浏览器会自动忽略第二种形式,而是将解释您的网页:

<form> 
    <fieldset> 
    <input> 
    </fieldset> 
</form> 
+0

几次阅读给定的代码后,我很确定它不输出嵌套窗体。第一个'foreach'可以忽略,第二个输出每个迭代的形式,第三个 - 嵌套在第二个 - 将输出表单元素。 – 2010-09-05 17:35:01

+0

@FreekOne:是的,你说得对。但是,示例代码不包含提到的字段集,所以我假设字段集以及它所在的表单在示例代码中被省略了。 – jmz 2010-09-05 17:41:31

+0

如果您按照最初问题的评论,我已经建议这不起作用,您现在看到的代码是最初版本的更新版本。 – 2010-09-05 17:47:24