Javascript Grails如何在每个
我有一段代码,我想将数据库中的值与用户在表单字段中输入的值进行比较Javascript Grails如何在每个,javascript,grails,Javascript,Grails,我有一段代码,我想将数据库中的值与用户在表单字段中输入的值进行比较 function checkFromIndex(form){ <g:each in="${index}"> <g:if test="${it.indexDate == form.endDate.value}"> alert("pass") </g:if> </
function checkFromIndex(form){
<g:each in="${index}">
<g:if test="${it.indexDate == form.endDate.value}">
alert("pass")
</g:if>
</g:each>
}
函数checkFromIndex(form){
警报(“通过”)
}
但是当我使用这个if语句时,它永远不会识别这个form.endDate(在它所做的每个语句之外)
任何解决方案
谢谢我的快速解决方案:
function checkFromIndex(form){
var endDate = form.endDate.value; //have to be Numeric type
var lst = ${[[id:1,indexDate:new Date().getTime()],[id:2,indexDate:new Date().getTime()],[id:3,indexDate:new Date().getTime()]] as grails.converters.JSON}
jQuery.each(lst, function(i,v) { if (v.indexDate == endDate) {alert ('pass!')}});
}
Grails标记在将页面提供给浏览器之前,在服务器端进行评估。因此不能在其中使用javascript变量或函数。这就是为什么在
中使用JS表达式form.endDate.value
是不正确的
它们仍然可以用于生成要在客户端进行评估的javascript。您可以这样编写函数:
function checkFromIndex(form) {
<g:each in="${index}">
if (${it.indexDate} == form.endDate.value) {
alert("pass")
}
</g:each>
}
function validate() {
var result = true;
$(".originalValue").each(function(i, item) {
var inputName = $(item).attr("name").replace("_original", "");
if ($(item).val() != $("#"+inputName).val()) {
result = false;
}
});
if (result) alert("Everything the same");
}
将原始值放入html表单中的隐藏字段,然后执行普通javascript例程,将原始值(=隐藏字段的值)与实际输入的值进行比较,如下所示:
function checkFromIndex(form) {
<g:each in="${index}">
if (${it.indexDate} == form.endDate.value) {
alert("pass")
}
</g:each>
}
function validate() {
var result = true;
$(".originalValue").each(function(i, item) {
var inputName = $(item).attr("name").replace("_original", "");
if ($(item).val() != $("#"+inputName).val()) {
result = false;
}
});
if (result) alert("Everything the same");
}
您的表单将如下所示:
<g:textField name="date" value="${date}"/>
<g:hiddenField name="date_original" class="orginalValue" value="${date}" />
如果输入元素的名称包含“.”,则需要对其进行转义,然后才能使用$(…)
选择它们