Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Rails应用程序中刷新页面之前,jQuery不会填充文本字段_Javascript_Jquery_Html_Ruby On Rails_Turbolinks - Fatal编程技术网

Javascript 在Rails应用程序中刷新页面之前,jQuery不会填充文本字段

Javascript 在Rails应用程序中刷新页面之前,jQuery不会填充文本字段,javascript,jquery,html,ruby-on-rails,turbolinks,Javascript,Jquery,Html,Ruby On Rails,Turbolinks,我有一个表单,它使用jQuery设置文本字段的值。第一次加载页面时表单不起作用,但在刷新页面后表单确实起作用。为了提供帮助,描述问题,我录制了一段约30秒的视频(托管在SwfCabin上): 你知道是什么引起的吗?我是jQuery新手,我不知道 这里是jQuery代码 $(document).ready(function () { $(".category").each(function () { $(this).find("a").click(function (ev

我有一个表单,它使用jQuery设置文本字段的值。第一次加载页面时表单不起作用,但在刷新页面后表单确实起作用。为了提供帮助,描述问题,我录制了一段约30秒的视频(托管在SwfCabin上):

你知道是什么引起的吗?我是jQuery新手,我不知道

这里是jQuery代码

$(document).ready(function () {
    $(".category").each(function () {
        $(this).find("a").click(function (event) {
            event.preventDefault();
            var category = $(this).text();
            $("#post_categories").val(category);
        });
    });
});
这是HTML表单:

<form accept-charset="UTF-8" action="/posts" class="new_post" id="new_post"
method="post">
    <div style="margin:0;padding:0;display:inline">
        <input name="utf8" type="hidden" value="&#x2713;" />
        <input name="authenticity_token" type="hidden" value="OCbmfFY1cNsaa5e+SbvcSrP0ubQTg432ECNGmvaU8bM="
        />
    </div>
    <p>
        <label for="post_title">Title</label>
        <input id="post_title" name="post[title]" type="text" />
    </p>
    <p>
        <label for="post_url">Url</label>
        <input id="post_url" name="post[url]" type="text" />
    </p>
    <p>
        <label for="post_categories">Pick a category</label>
        <input type="text" id="post_categories" />
    </p>
    <p>Available choices:</p>
    <ul>
        <li class="category"> <a href="">programming</a>

        </li>
        <li class="category"> <a href="">cats</a>

        </li>
        <li class="category"> <a href="">batman</a>

        </li>
    </ul>
    <p>
        <input name="commit" type="submit" value="Submit" />
    </p>
</form>


标题

网址

选择一个类别

可供选择:


看起来不错,确保包含了jQuery库,还可以稍微优化代码

$(document).ready(function() {
     $('.category a').click(function(event){
         event.preventDefault();
         var category = $(this).text();
         $("#post_categories").val(category);
     });
 });

小提琴手:

我以为阿伦·约翰尼和法汉提供了我想要的答案,但事实证明我有一个不同的问题。我正在编写的应用程序是RubyonRails,我没有收到关于Rails如何覆盖某些jQuery功能的备忘录

例如,在Rails 4.0.0中,默认情况下,TurboLink处理页面加载时执行JavaScript的操作。这意味着我试图使用
$(文档)。就绪(;
),但Turbolinks劫持了该功能。由于我还不完全理解的原因,刷新重新启用了我的jQuery脚本,然后它开始工作。我猜Turbolinks版本的
$(文档)。就绪(;
)在刷新页面时不会重置吗

作为一个短期的黑客,我最终通过安装RubyGem“jquery turbolinks”解决了这个问题。在某个时候,我需要学习如何使用或禁用turbolinks。也许我应该学习使用Angular或Ember:)DOM诡计是一种痛苦


Ryan Bates在中讨论了Turbolinks,包括如何在页面加载时执行代码。

在演示中看起来不错jQuery可以简化
jQuery(函数($){(“.category a”)。单击(函数(事件){event.preventDefault();var category=$(this.text();$(“#post_categories”).val(categories)})
同时检查您的浏览器控制台是否有任何可能导致错误。我们可以查看整个页面的源代码吗?包括页脚/页眉。Arun P Johny,您的代码版本非常好。我刚刚尝试过。显然,简单是值得的。我稍微调整了您的版本以满足我的口味--。Farhan,谢谢!这项工作也非常好.It优化是解决问题的关键。