我有一个JS脚本将托管在我的服务器上,其他人将嵌入他们的html,即
...<code for http://yoursite.com />
<script type="text/javascript" src="http://mysite.com/awesome.js" />
...<code for http://yoursite.com />
Run Code Online (Sandbox Code Playgroud)
我的脚本声明了一个对象,其中包含一组可用作javascript Object()的属性,即
<script type="text/javascript">
//From http://mysite.com/awesome.js
alert(Awesome.Name);
</script>
Run Code Online (Sandbox Code Playgroud)
由于加载时间的变化,似乎我需要发信号通知我的脚本中的"Awesome"对象已准备就绪.我需要它自己站立,因此不依赖于特定的JS框架.
我是否需要发布自己的自定义JS事件,或者我的脚本加载的简单事实是否被现有的页面级事件之一捕获?我该怎么做呢?
更新:作为参考点,如果我将JS包含在从" http://mysite.com " 运行的HTML页面中,则可以使用并填充Awesome对象.当JS文件包含在另一个域中时,该对象在运行时未定义.
在我的博客应用程序中,一些帖子显示为摘录 - 即,用户看到第一个(比如说)500个字符,并且可以单击链接查看整个帖子.以下是相关部分:
<% href = url_for post_path(:id => post) %>
<h1 class="title"><%= post.title %></h1>
<h2 class="published_on"><%= post.author %> wrote this <%= time_ago_in_words(post.published_on)%> ago</h2>
<div class="body">
<% if defined?(length) %>
<%= truncate_html(post.body, :length => length, :omission => "…<h1><a class='more' href=\"#{href}\">Click here for more!</a></h1>") %>
<% else %>
<%= post.body %>
<% end %>
</div>
Run Code Online (Sandbox Code Playgroud)
但是,而不是"点击此处获取更多信息!" 将用户带到一个单独的页面,我希望它能够填充内联的其余部分.目前,我已经通过将上面的代码片段放在以下div中来实现这一点:
<div class="post" id="post_<%= post.id %>">
<%= render :partial => 'post_content', :locals => { :post => post, :length => 500 } %>
</div>
Run Code Online (Sandbox Code Playgroud)
然后我在我的application.js中使用这个div的id来做AJAX:
$(document).ready(function() …Run Code Online (Sandbox Code Playgroud) 每当我使用Ajax将博客帖子加载到页面上时,我将页面设置<title>为"我的博客 - BLOGPOST_TITLE".
当然,"我的博客 - "也出现在我的应用程序布局中.
问题是,我怎么告诉我的Javascript字符串"我的博客 - "而不是在我的代码中重复它?
我正在构建一个页面来显示一堆网络摄像头图像并定期更新它们,以便该页面可用于一目了然的监控.但是,我遇到了定期重新加载工作的问题.我的代码看起来像:
<div class='cameras'>
<div class='camera'>
<h4>Desk</h4>
<img height='240' src='http://somehost/cameras/cam0/lastsnap.jpg' width='320'>
</div>
<div class='camera'>
<h4>Main Room</h4>
<img height='240' src='http://somehost/cameras/cam1/lastsnap.jpg' width='320'>
</div>
<div class='camera'>
<h4>Studio</h4>
<img height='240' src='http://somehost/cameras/cam2/lastsnap.jpg' width='320'>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望每隔几秒钟从指定的URL重新加载这些内容,而不必为每个摄像头生成单独的JS.我已经使用了jQuery来处理其他一些零碎的东西,所以坚持下去会很棒 - 然后,一个普通的JS解决方案也很好.
任何想法,StackOverflow JS众神?
我渲染一个带有表格的视图.表的每一行都是可以编辑的对象.所以,这个表的最后一列有一堆"编辑"按钮.当单击其中一个EDIT按钮时,JavaScript函数必须选取当前行所表示的对象的Id.最后,我想最终得到一个干净的HTML:没有"onclick","onmouseover"属性,也没有自定义的属性.下面我有两个我不感兴趣的例子.有什么好主意吗?
例1:
View.aspx
<td>
<input type="button" value="EDIT" onclick="JSFunction(<%: ObjectId %>)" />
</td>
Run Code Online (Sandbox Code Playgroud)
JavaScript的
function JSFunction(id)
{
//some code that does whatever with id
}
Run Code Online (Sandbox Code Playgroud)
例2:
View.aspx
<td>
<input type="button" value="EDIT" customAttribute="<%: ObjectId %>" />
</td>
Run Code Online (Sandbox Code Playgroud)
JavaScript的
$('input[type=button]').click(function() {
var id = this.attr('customAttribute');
//some code that does whatever with id
});
Run Code Online (Sandbox Code Playgroud)
PS如果你能想出一个更好的问题标题,请分享:)
我想这更多是关于SEO而不是想要支持禁用Javascript的浏览器.我有Javascript/jQuery代码,读取一些HTML,基本上显示它更好..remove()在此过程中实际删除了html(使用jQuery的函数).
所以我隐藏了html,因此页面加载时没有任何可视化的工件.但是现在我想只在启用Javascript时隐藏它.我想最简单的事情就是让一些Javascript <head>将display: nonecss规则添加到适当的元素中.
有没有更好的方法来处理这种情况?
我希望能够使用内置的,基于数据注释的,客户端不显眼的验证,但在我知道它通过之后,我自己做了ajax表单提交.
像这样的jQuery位:
$('#form').submit(function(e) {
e.preventDefault();
if (PassesUnobtrusiveValidation()) {
// ajax submit form
}
});
Run Code Online (Sandbox Code Playgroud)
是否存在PassedValidation事件或类似事件(内置于默认的基于asp.net mvc 3数据注释的客户端验证)我可以挂钩(如示例中的伪代码)?
我想这样做,所以我仍然可以利用基于数据注释的验证,然后以我想要的方式异步提交表单.我希望避免在客户端编写常见的验证,让asp.net mvc 3为我处理它,然后提交表单我想要的,使用$.ajax();
validation jquery unobtrusive-javascript data-annotations asp.net-mvc-3
我正在将应用程序从Rails 2升级到3并正在重新设计所有远程功能以使用Unobtrusive Javascript.我正在努力的是在UJS中处理ajax回调.
我发现有很多资源可以展示如何使用jQuery实现这些回调,但对于原型来说并不多.也许你可以帮我解决这个问题.
在Rails 2中,我有这个:
<% remote_form_for @foo, {:loading => "loading_function()", :complete => "complete_function()" } do |f| %>
...
<% end %>
Run Code Online (Sandbox Code Playgroud)
在Rails 3中,我有这个:
<%= form_for @foo, :remote => true do |f| %>
....
<% end %>
Run Code Online (Sandbox Code Playgroud)
从我到目前为止所知(可能是错误的),我需要将旧的加载/完成函数附加到表单,以便它们将被Rails.js中的handleRemote函数触发.我只是不确定该怎么做.
再一次,我在Prototype中这样做.因此,非常感谢特定于该框架的答案.
我需要在元素下面显示验证消息.
我试过添加如下消息:
[Required(ErrorMessage = "<br /> UserName is required")]
public string UserName { get; set; }
Run Code Online (Sandbox Code Playgroud)
但是上面提到的消息被呈现为(验证消息被编码的地方):
<input type="text" value="" tabindex="1" style="height:auto; width:280px;" size="40" name="UserName" maxlength="15" id="UserName" data-val-required="&lt;br /&gt; UserName is required" data-val="true" class="textfield">
Run Code Online (Sandbox Code Playgroud)

如果我<br/>从模型的消息中删除,验证消息显示在两行中.此外,我已尝试添加如下验证,但验证消息未被覆盖,如下面的验证方法(从"UserName is required"覆盖到"输入用户名"):
$('#userSignInform').validate({
rules:
{
UserName: { required: true },
Password: { required: true }
},
messages:
{
UserName: { required: "Enter Username" },
Password: { required: "Enter the Password" }
},
errorPlacement: function (error, element)
{
error.appendTo(element.parent("td").next("td"));
}
});
Run Code Online (Sandbox Code Playgroud)
是什么需要解决方法来显示元素下面的验证消息,并使用jquery validate方法覆盖模型消息?
我正在使用Ruby on Rails 4,我想以Rails的方式处理JavaScript事件.也就是说,例如,鉴于我有以下内容
link_to('destroy', article_path(@article), :method => :delete, :remote => true)
Run Code Online (Sandbox Code Playgroud)
当我点击上面生成的链接时,我希望successJS事件通过删除已删除的文章DOM元素来更新页面内容.无论是什么,AJAX响应都应该被忽略.
我知道rails.js文件的存在,但我不知道如何使用它来完成我正在寻找的东西.
javascript ruby-on-rails unobtrusive-javascript javascript-events ruby-on-rails-4
javascript ×6
jquery ×6
ajax ×1
css ×1
dry ×1
html ×1
image ×1
prototypejs ×1
seo ×1
validation ×1