我正在尝试加载相同的表单,但根据屏幕大小稍微重新排列html。
我知道这可以用css实现,但这不是我所追求的,因为我有特定的页面,我不希望表单加载,所以我使用php来检查我所处的页面,并根据页面显示/隐藏表单。
search.php和search_mobile.php都使用相同的表单,除了html的小改动外,其他都是相同的。
在提交时,即使移动表单是隐藏的,它仍然影响搜索结果。有没有办法完全隐藏它?我尝试了visibility:hidden,但这只是在视觉上隐藏它,而display:none似乎也不起作用。
<form method="get" action="">
<?php include 'search.php'; ?>
<div id="mobile" style="display:none;">
<?php include 'search_mobile.php'; ?>
</div>
...more code
</form>
这取决于加载手机的条件或默认值。当你有这种情况时,你不需要隐藏它,你只要不把它包括在页面上……结果html甚至不包含代码。
<form method="get" action="">
<?php
if( /* CONDITION FOR SHOWING MOBILE OR DEFAULT */ )
include 'search.php';
else
include 'search_mobile.php';
?>
...more code
</form>
很难确定到底发生了什么或者你想要实现什么,但我会检查每个表单标签,他们需要有自己的名称属性专门在页面上工作。
<form name="form1" method="get" action="">
<?php include 'search.php'; ?>
...more code
</form>
<form name="form2" method="get" action="">
<div id="mobile" style="display:none;">
<?php include 'search_mobile.php'; ?>
</div>
...more code
</form>
是的,表单中的任何输入元素都会被提交,不管它是否可见。你可以通过在提交前禁用这些元素来解决这个问题。
$('form').on('submit', function() {
$(this).find(':input').not(':visible').attr('disabled', true);
});
无需更改HTML或PHP