表单验证我正在使用 https://jqueryvalidation.org . 我已经通过 depends 属性实现了自定义验证规则。
验证错误规则如下:
如果两个价格框都未选中,则不会显示错误。
如果选择了一个价格框(两个中的一个),验证错误将显示用户需要同时选择两个。
如果两者都被选中,那么 max price 值必须大于 min price 。
请在下面找到我的代码:
在我的代码中,每个条件都满足,但最后一条规则意味着最高价格将始终大于最低价格不起作用。它检查为真但验证未触发。
这里是 jsfiddle link
$(document).ready(function() {
$("#form1").validate({
debug: true,
onkeyup: false,
onfocusout: false,
onclick: false,
rules: {
minrange: {
required: {
depends: function() {
var min_range = $("#min-range").find(':selected').val(),
max_range = $("#max-range").find(':selected').val();
if (min_range == "" && max_range == "") {
return false;
} else if (min_range != "" && max_range == "") {
return true;
} else if (min_range == "" && max_range != "") {
return true;
} else if (parseInt(max_range) < parseInt(min_range)) {
return true;
} else {
return false;
}
}
}
},
maxrange: {
required: {
depends: function() {
var min_range = $("#min-range").find(':selected').val(),
max_range = $("#max-range").find(':selected').val();
if (min_range == "" && max_range == "") {
return false;
} else if (min_range != "" && max_range == "") {
return true;
} else if (min_range == "" && max_range != "") {
return true;
} else if (parseInt(max_range) < parseInt(min_range)) {
return true;
} else {
return false;
}
}
}
},
},
submitHandler: function(formName, event) {
alert("sucess");
}
});
});
这里是 jsfiddle link
最佳答案
您可以使用 max 来完成此操作和 min规则。这是 fiddle .
代码:
$(document).ready(function() {
var $min_range = $("#min-range"),
$max_range = $("#max-range");
$("#form1").validate({
debug: true,
onkeyup: false,
onfocusout: false,
onclick: false,
rules: {
minrange: {
required: function() {
return !($min_range.val() === "" && $max_range.val() === "");
},
max: function() {
if ($max_range.val() !== "") {
return $max_range.val();
}
}
},
maxrange: {
required: function() {
return !($min_range.val() === "" && $max_range.val() === "");
},
min: function() {
if ($min_range.val() !== "") {
return $min_range.val();
}
}
}
},
submitHandler: function(formName, event) {
alert("sucess");
}
});
});
关于javascript - 最小最大价格范围验证不适用于 jquery.validate.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37355054/
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
请帮助我理解范围运算符...和..之间的区别,作为Ruby中使用的“触发器”。这是PragmaticProgrammersguidetoRuby中的一个示例:a=(11..20).collect{|i|(i%4==0)..(i%3==0)?i:nil}返回:[nil,12,nil,nil,nil,16,17,18,nil,20]还有:a=(11..20).collect{|i|(i%4==0)...(i%3==0)?i:nil}返回:[nil,12,13,14,15,16,17,18,nil,20] 最佳答案 触发器(又名f/f)是
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or
假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我在我的Rails3示例应用程序上使用CarrierWave。我想验证远程位置上传,因此当用户提交无效URL(空白或非图像)时,我不会收到标准错误异常:CarrierWave::DownloadErrorinImageController#createtryingtodownloadafilewhichisnotservedoverHTTP这是我的模型:classPaintingtrue,:length=>{:minimum=>5,:maximum=>100}validates:image,:presence=>trueend这是我的Controller:classPaintingsC
当我使用has_one时,它工作得很好,但在has_many上却不行。在这里您可以看到object_id不同,因为它运行了另一个SQL来再次获取它。ruby-1.9.2-p290:001>e=Employee.create(name:'rafael',active:false)ruby-1.9.2-p290:002>b=Badge.create(number:1,employee:e)ruby-1.9.2-p290:003>a=Address.create(street:"123MarketSt",city:"SanDiego",employee:e)ruby-1.9.2-p290
我正在尝试查询我的Rails数据库(Postgres)中的购买表,我想查询时间范围。例如,我想知道在所有日期的下午2点到3点之间进行了多少次购买。此表中有一个created_at列,但我不知道如何在不搜索特定日期的情况下完成此操作。我试过:Purchases.where("created_atBETWEEN?and?",Time.now-1.hour,Time.now)但这最终只会搜索今天与那些时间的日期。 最佳答案 您需要使用PostgreSQL'sdate_part/extractfunction从created_at中提取小时