[英]Using javascript namespaces with ruby and sinatra
我正在尝试为我的Web应用程序创建一些javascript验证,并且一切都进行得很好,除了我不希望我的脚本一直在寻找可验证的内容。
假设我有两件事要验证,但它们不会出现在同一页面上。 它们位于'/page1'
和'page2'
,我不希望我的page1验证程序在page2上运行。
通过对象文字可以做到这一点吧? 像这样:
var validations =
{
page1validation :
{
init : function()
{
// validation page 1
}
}
page2validation :
{
init : function()
{
// validation page 2
}
}
}
因此,我需要调用这些验证方法,例如validates.page1validation.init validations.page1validation.init()
,我想我可以在每个具有所需验证形式的haml视图中使用内联javascript做到这一点。
%form{:action => ""}
%input{:type => "text"}
%input{:type => "submit", :value => "save"}
:javascript
$(function() {
validations.page1validation.init();
});
但是必须有一个更好的解决方案-我现在想不出一个解决方案。 那么,您将如何确保验证器不会一直尝试验证?
哦,如果我将javascript放在布局文件的底部,则内联javascript将无法工作...
执行所需操作的最简单方法是使用不同的id或类使表单不同。
然后,您的验证可以利用该差异独立地“定位”每种表单。 使用这种方法,您不需要额外的“命名空间”。 相反,您可以执行以下操作。
$(function() {
page1validation();
page2validation();
});
function page1validation() {
var form = getElementById('form1'); // form1 is the first form
if(!form) then return;
// .. perform validations in form 1
}
function page2validation() {
var form = getElementById('form2');
if(!form) then return;
// .. perform validations in form 2
}
另外,我建议您花一些时间来学习jQuery之类的js库。 它提供了一些内置方法,可以使上面的代码更小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.