2014-01-12 56 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 –

相關問題