【问题标题】:New to Ajax...how can I return my CSS to it's default value after an ajax call? (e.g. reload CSS)Ajax 新手...如何在 ajax 调用后将我的 CSS 恢复为默认值? (例如重新加载 CSS)
【发布时间】:2012-05-03 18:35:49
【问题描述】:

好的,所以我使用 jQuery ajax() 调用从 php 页面获取响应,以便提交/检查表单。当它成功时,它会返回一个表单元素列表和相应的消息,说明它们有什么问题(例如缺少字段、无效输入等)。

然后它再次使用 jQuery 循环遍历由 ajax 调用返回的每个表单元素并更改它们的 css(通过 导入) - 例如使元素边框变为红色,表示该元素有错误。

这很好用。但是,假设我提交了缺少字段的表单 - ajax 进行了调用,并且页面的 css 被更改为用红色突出显示该字段。现在假设我解决了该字段的问题(例如,为其提供有效数据)并重新提交,但这次缺少不同的字段。虽然它会正确地为新的缺失字段提供红色边框,但它不会从重新提交时正确的字段中删除红色边框。换句话说,一旦出现红色边框,我就永远无法清除它。

我想我可能需要在 javascript 中执行“重新加载 css”类型的函数来在 ajax 调用后重新加载 css ......还是什么?我真的不知道。不过,这似乎应该是一件非常普遍的事情。仔细阅读,它看起来可能与缓存页面有关,但我认为我无法控制这类事情。

可能值得一提的是,我正在使用 Less CSS。哈尔普兹?

【问题讨论】:

    标签: jquery css ajax less


    【解决方案1】:

    不确定如何在回调中添加边框/样式,但我建议在该类中声明的样式中缺少的表单字段中添加一个 css 类。然后使用 'if' 语句或 :focus 事件,在用户点击返回时删除类。

    【讨论】:

      【解决方案2】:

      我觉得你想多了。您不想直接使用 jQuery 修改 CSS。您只想打开和关闭课程。

      如果这是你的领域:

      <input type="text" />
      

      有一个错误,让服务器返回这个:

      <input type="text" class="error" />
      

      如果你需要关闭错误状态

      $theInput.removeClass("error")
      

      这样您根本不会直接接触 CSS,也无需“重新加载”它(不是这样就能解决问题)。

      【讨论】:

      • 这肯定比我做的更优雅,但我仍然遇到同样的问题...我不跟踪有效的字段,只有那些 是无效。我想我可以在每次 ajax 调用之后做一个 $("form *").removeClass("error") (以便将表单返回到其原始状态),但我认为会有一些更抽象的东西,因为这可能是一件很常见的事情。
      • 我需要更多说明,您在哪里进行实际验证?是客户端还是服务器端?如果是服务器端,只需在此处附加 ERROR 类。然后重置,做你所拥有的......只需从它们中删除类。
      • 我同意 DA,尽管在消除错误类时我会选择 $("form .error")$("form input") 而不是 $("form *"),只是为了提高效率。
      猜你喜欢
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-05
      • 2013-09-11
      • 1970-01-01
      相关资源
      最近更新 更多