Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Grails如何在每个_Javascript_Grails - Fatal编程技术网

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}" />

如果输入元素的名称包含“.”,则需要对其进行转义,然后才能使用
$(…)
选择它们