我的rails应用程序(全部是2.3.5)使用内联javascript,rjs,prototype和jquery的混合.让我们称之为学习或成长的痛苦.最近我越来越迷恋不引人注目的javascript.它使你的html干净,就像css清理它一样.
但我见过的大多数例子都是小例子,他们把所有javascript(jquery)放在application.js中
现在我有一个非常大的应用程序,我正在考虑如何构建我的js.我喜欢某种方式,我的脚本仍然靠近视图,所以我在想类似的东西
orders.html.erb
orders.js
Run Code Online (Sandbox Code Playgroud)
其中orders.js包含特定于该视图的不显眼的javascript.但也许这只是我过于保守:)
我看过耶胡达·卡茨一些职位,关于这个问题非常这里和这里,他铲球这个问题.它将遍历您的js文件,并仅加载与您的视图相关的文件.但唉,我找不到当前的实现.
所以我的问题:
content_for :script或javascript_include_tag在你的视图中加载相关的脚本.要么 ... ?简而言之:在rails中执行不显眼的javascript的最佳做法是什么?:)
我正在尝试将异步版Google Analytics跟踪代码添加到网站中.
我想将JavaScript保存在一个单独的文件中,并从那里调用它.
这是我目前在.js文件中得到的内容:
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}
function loadtracking() {
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
}
addLoadEvent(loadtracking);
Run Code Online (Sandbox Code Playgroud)
这就是我在<head>母版页面标签中的内容:
<script …Run Code Online (Sandbox Code Playgroud) javascript asynchronous google-analytics unobtrusive-javascript
有没有办法只使用jQuery在网站上找到客户位置.例如,如果用户访问我的网站,我怎么能找到他们的大概位置只是使用jQuery.例如,如果用户来自旧金山CA,则会有一些类型标识符让我知道用户来自旧金山CA. 我真的不需要他们的确切位置只是县或一般的原产地.
编辑:如何生成http://flourishworks-webutils.appspot.com/req上的信息?
谢谢
在javascript中查找所有nextSiblings和previousSiblings的完美方式是什么?我尝试了几种方法但没有得到准确的解决方案 如果选择了任何元素,我需要得到所有下一个兄弟的长度,不包括空格,任何空格或换行符
另外我不想为此使用jquery,我特意从java脚本中查找内容
请指教
使用JavaScript的一个令人困惑的事情是使用它
var x = {
ele : 'test',
init : function(){
alert(this.ele);
}
}
Run Code Online (Sandbox Code Playgroud)
然而,当处理多个对象,特别是事件上下文的this变化,变得混乱,以保持跟踪/理解.
因此,如果有人有更好的意见/指导/想法/更好的做法,请分享.另外我想知道如果使用this给予任何(性能)优势或什么?
我一直试图让MVC Jquery不引人注意的错误处理与twitter bootstrap一起工作一段时间了.它到了关键点我要么编辑jquery.validate,要么在document.ready上做一些破解和削减.
为了使用不引人注意的错误处理来使用Bootstrap和MVC,我需要将它附加到'control-group'类的'error'类.除此之外,'error'类被附加到输入.
我想知道社区中是否有人找到了解决方案.
例如
典型的bootstrap标记就像这样......
<div class="control-group">
<label for="Username">Username</label>
<div class="controls">
<input data-val="true" data-val-required="Username is required" id="Username" name="Username" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Username" data-valmsg-replace="true"></span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
什么应该发生,当jquery.validate不引人注目的火灾时模糊...它会改变为以下
<div class="control-group error">
<label for="Username">Username</label>
<div class="controls">
<input data-val="true" data-val-required="Username is required" id="Username" name="Username" type="text" value="" />
<span class="field-validation-valid help-inline" data-valmsg-for="Username" data-valmsg-replace="true"></span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
要在回发/提交时使用此功能,您可以执行以下操作...
//twitter bootstrap on post
$(function () {
$('span.field-validation-valid, span.field-validation-error').each(function () {
$(this).addClass('help-inline');
});
$('form').submit(function () {
if ($(this).valid()) {
$(this).find('div.control-group').each(function () {
if ($(this).find('span.field-validation-error').length == …Run Code Online (Sandbox Code Playgroud) css validation asp.net-mvc unobtrusive-javascript twitter-bootstrap
我正在为我正在构建的网站开发一个相当繁重的JavaScript接口,我决定使用(最近制作的官方)jQuery模板插件从我的查询生成我的元素到JSON API.现在,我目前遇到的问题是:
我很容易有一堆这些模板.一种用于每种对象,一种用于列表,一些用于页面的部分,等等.是否有任何存储这些模板的首选方式?我已经阅读过使用模板名称定义<script>标签id,然后从那里检索文本(正如John Resig在" JavaScript Micro-Templating "中描述的那样),但是<script>每个页面中都有一堆标签看起来有点像的hackish.
所以,问题是:对于这种情况,有没有"最佳实践"?
我试图在提到执行代码这篇文章.换句话说,我正试图在条款和条件复选框上实现不显眼的验证.如果用户未选中该复选框,则应将输入标记为无效.
这是服务器端Validator代码,我添加了:
/// <summary>
/// Validation attribute that demands that a boolean value must be true.
/// </summary>
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
public class MustBeTrueAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
return value != null && value is bool && (bool)value;
}
}
Run Code Online (Sandbox Code Playgroud)
这是模型
[MustBeTrue(ErrorMessage = "You must accept the terms and conditions")]
[DisplayName("Accept terms and conditions")]
public bool AcceptsTerms { get; set; }
Run Code Online (Sandbox Code Playgroud)
这是我的看法:
@Html.EditorFor(x => x.AcceptTermsAndConditions)
@Html.LabelFor(x => x.AcceptTermsAndConditions)
@Html.ValidationMessageFor(x …Run Code Online (Sandbox Code Playgroud) unobtrusive-javascript razor unobtrusive-validation asp.net-mvc-3
直到今天我才认为我使用Rails表单+ jQuery UJS的方式是正确的方法,但是jQuery 1.7的升级'打破'到目前为止我的方式.
我想在表单中使用Ajax.ajax响应应该再次呈现表单(例如,发生错误时)或重定向到成功页面.(它应该可以做更多,比如显示模态,但我想保持这个例子简单).
这就是我迄今为止所做的.我的ajax响应是一个ejs模板,它返回了javascript代码以再次呈现表单(有错误)或者取决于是否是错误将用户重定向到成功页面:
<% unless @success_submit %>
$('#form_wrapper').html('<%= escape_javacsript( render :partial => 'form' ) %>');
<% else %>
document.location = '/success_thank_you';
<% endif %>
Run Code Online (Sandbox Code Playgroud)
现在假设表单包含一个错误消息div like
<div class="error_message">BlaBla</div>
Run Code Online (Sandbox Code Playgroud)
为了添加一个很好的效果,我在ajax完成时绑定了一个通用的jQuery.live事件,突出显示了错误.
$('form').live('ajax:complete', function() {
// do stuff like highlighting all error messages in that form
});
Run Code Online (Sandbox Code Playgroud)
这不再适用于jQuery1.7 + jquery-ujs(可能有很好的理由).所以我猜我做的方式不对.
而不是绑定ajax:complete事件我可以在EJS中执行"错误突出显示内容"
$('#form_wrapper').html('<%= escape_javascript( render :partial => 'form' ) %>');
$('#form_wrapper form .error_message').fadeIn();
Run Code Online (Sandbox Code Playgroud)
但这意味着我将不得不重复几乎每一个呈现形式的EJS的第二行.当然,我想保持干爽.
一个完全不同的解决方案是ajax响应只是渲染纯html和我的自定义ajax:完整的处理程序将负责显示表单.处理程序看起来像
$('form').live('ajax:success', function(ev, data, status, xhr) {
$(this).html(data);
// and e.g. …Run Code Online (Sandbox Code Playgroud) 在我的rails应用程序中,我有一个看起来像这样的远程表单:
<%= form_tag some_path, :method => :get, :id => 'my-form', :remote => true do %>
<%= text_field_tag :search, params[:search], :id => 'search-field' %>
<%= submit_tag 'Go' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
现在我想通过javascript提交此表单并触发所有rails远程表单回调.到目前为止,我已经尝试了一些东西,但似乎没有任何工作.
我尝试过的事情:
$('#my-form').trigger('onsubmit')
$.rails.callFormSubmitBindings( $('#search-form') )
Run Code Online (Sandbox Code Playgroud)
但到目前为止没有运气.有任何想法吗?
javascript ×5
jquery ×4
ajax ×1
asp.net-mvc ×1
asynchronous ×1
css ×1
forms ×1
html ×1
razor ×1
ruby ×1
storage ×1
templates ×1
validation ×1