2014-01-12 55 views
0

我有一个JavaScript函数,它向Grails控制器中的方法提交消息,同时用myID id更新div。如何将JavaScript变量传递给g:remoteFunction“update”属性?

function messageKeyPress(field,event,messageBox) { 
    ... 
    var message = $('#messageBox').val(); 
     <g:remoteFunction action="submitMessage" params="\'message=\'+message" update="myID"/> 
    ... 
} 

我用这样的:

<div id="chatMessages" class="chatMessages"></div> 
    <input type="text" id="messageBox" class="messageBox" name="message" onkeypress="messageKeyPress(this,event,'#messageBox');"/> 
    <div id="myID"> 

我想这个函数是可重用的能更新不同的div。

我想:

onkeypress="messageKeyPress(this,event,'#messageBox', '#myID');" 

,并在JavaScript:

function messageKeyPress(field,event,messageBox, myID) { 
... 
<g:remoteFunction action="submitMessage" params="\'message=\'+message" update="${myID}"/> 

但没有奏效。我的问题是如何将JavaScript变量传递给Grails g:remoteFunction“update”属性。

回答

0

update属性应设置为要更新的元素的ID,而不是与此元素匹配的选择器。换句话说,试试这个:

onkeypress="messageKeyPress(this,event,'#messageBox', 'myID');" // '#' removed from myID 
+0

我用update =“$ {myID}”和update =“{myID}”尝试了它,但不幸的是它不起作用。 –

+0

@ mateusz.s它是第三个参数,你传递给'messageKeyPress',你需要改变它,也就是将它从''myID''改成''myID'' –

1

我建议你改用jQuery。它默认捆绑到Grails项目中。因此,您将在javascript代码和gsp视图逻辑之间得到一个简洁的分离。例如,application.js中可能是这样的:

(function($) { 
    $('.messageBox').on('keypress', function() { 
     ... 
     var params = {message: $(this).val()}; 
     var url = $(this).data('url'); 
     var target = $(this).data('target'); 
     $.post(url, params, function(response) { 
      $(target).html(response); 
     }); 
     ... 
    }); 
})(jQuery); 

和您的视图文件:

<input type="text" id="messageBox" 
     class="messageBox" name="message" 
     data-url="${createLink(action: 'submitMessage')}" 
     data-target="#myId"/> 
<div id="myID"></div> 

你应该在messageBox CSS类分配给你想拥有此事件侦听器的每个输入字段。并且在每个字段的data-target属性中,您可以为所有应该更新的div指定一个选择器。

jQuery非常容易学习。 http://api.jquery.com/

+0

Q和offtop:数据属性是一种摆脱方式js中的groovy代码?当我需要一个来自服务器的参数并将其放入内联js时,有很多情况。只渲染html和数据标签看起来像是一种魅力:) – havenchyk

+0

当然可以。数据属性是在HTML5中引入的,用于存储与元素相关的自定义数据。你可以在这里阅读:http://www.w3schools.com/tags/att_global_data.asp –

相关问题