【问题标题】:Setting values of DOM items before page load in JQUERY在 JQUERY 中页面加载之前设置 DOM 项的值
【发布时间】:2012-07-22 16:29:48
【问题描述】:

我有一个表单,我在页面加载时为框(文本框、选择框、单选框)设置值,如下所示。

<script>
$(function() {
   $("#text").val(\''.$_GET['q'].'\');
   $("#category").val(\''.$_GET['cat'].'\');
});
</script>

但主要问题是第一页加载空框,并且在一秒钟或有时超过一秒钟后将值加载到框。在所有框都设置了值之后,我怎样才能显示页面?这必须在 jquery 中。

附:请不要为我提供 php 解决方案。如果可能只有 jquery 解决方案。

谢谢。

【问题讨论】:

    标签: jquery pageload setvalue


    【解决方案1】:

    为什么必须在 jQuery 中,为什么不能在纯 javascript 中设置值,或者甚至更好地直接在 HTML 中设置,因为我假设 $_GET 引用 PHP 变量,而您用于设置这些值的方法似乎完全没有必要?

    <input type="text" value="$_GET['q']" id="text" />
    

    或者放在元素后面的纯js中

    <script type="text/javascript">
        document.getElementById('test').value = $_GET['q'];
    </script>
    

    跳过了一些奇怪的转义和集中,并且不太关心所有不同的引号,你必须自己弄清楚这些,只是为了展示我会怎么做?

    jQuery 一直等到 DOM 和其中的所有内容都加载完毕,因此您已经有了 jQuery 解决方案。这意味着 jQuery 代码将始终在直接设置值之后执行,甚至在元素可用时立即使用纯 javascript 等。

    如果你真的根本不关心用户体验或加载时间,你总是可以在你的 css 中将body 标签设置为display:none,并在你在你的 jQuery 中设置值之后立即使用$('body').show();脚本,这是一个 jQuery 解决方案,但它是一个糟糕的解决方案!

    【讨论】:

    • 首先感谢。我理解你,我知道用 php 设置是无忧无虑的解决方案。但是表单是非常动态的,大多数项目都是在更改另一个盒子时加载的,所有这些都是在我之前在 jquery 中完成的。我看不到 php 中的所有框,因为其中一些是由 jquery 生成的。我只想在设置所有值后显示页面。
    • 是的,车身显示解决方案不好。你还能给我什么建议?我是否正确解释了情况?
    • 好吧,我认为这个问题还可以,但 IMO 最好的解决方案是找到某种方法将这些 PHP 值从 $_GET 直接设置为元素。您已经在 document.ready 上设置它们,而不是在某些特定事件上,因此直接在生成表单的 PHP 中设置它们是一样的,只需多做一点工作即可确定将它们插入的确切位置如果表单很复杂,但它是迄今为止最好的解决方案,也是唯一在页面加载时填充表单的解决方案,因为所有 javascript 解决方案都必须在事后插入它们。
    猜你喜欢
    • 2018-06-07
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多