在页面完成时隐藏表单仍然会影响提交时的搜索


hiding a form from the page complete still effects the search on submit

我正在尝试加载相同的表单,但根据屏幕大小稍微重新排列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