0

我正在编辑的网站有一个搜索表单。作为记录,网站上还有其他几种形式,联系方式等。这是唯一一个有问题的。

提交表单后,一些样式在 IE9 中丢失(可能是其他版本的 IE,尚未测试)。首先,在 html 和 body 中设置的边距和颜色似乎已经丢失。菜单、横幅、文本等似乎都保留了样式。所有样式都在一张纸上,在这里使用...

有什么有用的建议吗?

这是搜索页面的内容和用于检查表单的 php,如果有帮助,以及我认为丢失的 css。

编辑:该页面是一个搜索页面,上面几乎没有任何内容。搜索重新加载同一页面,同时显示搜索功能的结果。因此,应该嵌入相同的嵌入工作表,就我所见,显示相同的 html ......如果这有助于讨论的话。仍在筛选以找到某种类型的错误。当在 IE7-8 中查看时,IE 开发工具似乎也表明此错误也发生在以前版本的 IE 中......

的HTML:

<div id="search">
        <br />
            <div style="float:right;font-size:.8em;">
                <form name="form_sidesearch" action="search.html" method="post">
                <input type="hidden" name="action" value="search" />
                <input type="text" name="search_value" value="<?php echo $systems_primary->search_value ?>" />
                <input type="submit" name="submit_search" value="Search Website" />
                </form> <br />

            </div>
    </div>

<?php echo stripslashes($search_results);

PHP:

<?php

// -- Begin Search --------------------------------------------------------------------------------------
if($_REQUEST["action"] === "search")
{
  if(strlen($_REQUEST["pg"]) <= 0)
  {

  $_REQUEST["pg"] = 1;
  }

  $search_results = $systems_primary->search_website("index",urldecode($_REQUEST["search_value"]),"<div class=\"listing ui-corner-all\"><a href=\"{ENTRY_URL}\" title=\"{ENTRY_TITLE}\" class=\"listing_title\">{ENTRY_TITLE}</a>{ENTRY_CONTENT} <a href=\"{ENTRY_URL}\" title=\"{ENTRY_TITLE}\" style=\"font-size:.8em;\">...read more</a></div><br /><br />",345,"all",10,$_REQUEST["pg"]);
}

// -- End Search ----------------------------------------------------------------------------------------
?>

丢失的 CSS(可能更多):

html {
background-color:#F6E6C8;
font-size:16px;
font-family:Helvetica;
}
body {
    width:1027px;
    margin:0 auto;
    background-color:#ffffff;
    font-family: arial, 'times new roman', sans-serif;
}

详细说明:实际发生的情况是页面内容作为一个整体向左移动并保持左对齐,而不是使用自动边距保持居中。此外,html 背景颜色会丢失。搜索字段的样式也会丢失或被忽略。不知道还有什么可以改变的。

4

2 回答 2

0

你可以做这样的事情......

$('#yourForm").on('submit',function(e){
 $(this).css({
 // reasign all the atributes you lost
 });
 e.preventDefault();
});
于 2012-07-04T17:47:38.330 回答
0

通常,当提交表单后样式丢失时,尤其是当它是 Ajax 操作而不是整个页面重新加载时,这是因为使用 JavaScript 或 jQuery 应用的某些样式在重新加载页面的更新部分时没有重新应用。这可能涉及创建其他元素,或者可能涉及将 CSS 类添加到 1 个或多个元素。

这尤其可能发生在 HTML 表单元素的样式中,因为在某些情况下,某些表单元素的重样式只能在 JavaScript 或 jQuery 的帮助下完成。

在这种情况下,识别在页面首次加载时为相关内容设置样式的 JavaScript 或 jQuery,然后在页面更新后重新应用它(在 Ajax 调用成功完成之后,或者在浏览器重新加载页面或加载新页面)。

如果做不到这一点,请比较页面前后的 HTML,看看有什么变化。body 标记上可能有一个 CSS 类,或者一个容器类的设置不一致。如果加载了新页面,则可能会下载一组不同的 CSS 文件,或者可能存在一个页面具有但另一个页面没有的嵌入式样式表。

否则,请验证 HTML 和 CSS 是否有效。在呈现无效代码时,某些浏览器比其他浏览器更宽容。看起来像浏览器错误的情况可能是由错误的代码引起的。

如果所有这些都没有结果,而且问题似乎越来越可能是由一个晦涩的浏览器错误引起的,那么将代码减少到可以持续重现问题的最简单状态,并尝试更清楚地确定问题所在bug的性质是。这将使搜索可能的修复和寻求帮助变得更加容易。并且在减少代码的过程中,如果问题突然消失,最后删除的代码可能至少部分是导致问题的原因。

相反,当问题似乎没有规律或原因时,有时从头开始重新实现代码以查看问题是否仍然存在是有帮助的。如果问题在编写代码时的某个时间点开始出现,那么同样,最后添加的代码可能至少部分是导致问题的原因。

于 2012-07-04T14:09:46.983 回答