2014-12-08 33 views
0

JavaScript函數工作:JavaScript函數不具有特殊字符變量

var Id ; //global variables 
var Name; //global variables 
function getServiceId(id,name){ 
    Id=id; 
    Name = name; 
    alert(Id); 
} 

這我的JSP代碼

<core:forEach var="service" items="${listServiceBO}"> 
           <tr> 
            <td><a href="Javascript:void(0);"> 
              ${service.name} 
            </a></td> 
            <td>${service.multiplicity}</td> 
            <td>${service.scheduleType}</td> 

            <td> 
             <button type="button" id="serviceDeleteButton(${service.id})" name="serviceDeleteButton" 
              onclick="getServiceId(${service.id},'${service.name}');" title="Delete" 
              class="btn btn-link btn-inline" data-toggle="modal" 
              data-target="#deleteServiceModal"> 
              <span class="glyphicon glyphicon-remove"></span> 
              <span class="sr-only">Delete</span> 
             </button> 
            </td> 
           </tr> 
          </core:forEach> 

如果我service.name包含任何特殊字符....我的價值沒有得到在Javascript中設置。但是如果我沒有這個名字的特殊字符,那麼它工作的很好。

由於特殊字符,我無法設置這兩個值中的任何一個。任何解決方案

+1

你可以把這個的jsfiddle

var Id ; //global variables var Name; //global variables function getServiceId(id,name){ Id=id; Name = escapeRegExp(name); alert(Id); } function escapeRegExp(str) { return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); } 

jsp中沒有強項,但也許這種變化? – Todd 2014-12-08 08:39:46

+0

http://stackoverflow.com/questions/1470768/how-to-escape-apostrophe-or-quotes-on-a-jsp-used-by-javascript – tachyonflux 2014-12-08 09:03:20

回答

0

你可以試試這個:

onclick="getServiceId(${service.id},&quot;${service.name}&quot;);" 

或者,做的最好的事情會逃避在Java中所有的值:

Base64.encode(str); 

,並在Javascript中做一個解碼:

decodeURIComponent(str); 
+0

謝謝你。這是工作! – Crawling 2014-12-08 09:49:19

0

編輯:

嘗試只逃脫它:

onclick="toggle('getServiceId(${service.id},'${service.name}')');" 

到:

onclick="toggle('getServiceId(${service.id}, \"${service.name}\")')" 
+0

謝謝!這也很有效。 :) – Crawling 2014-12-08 09:49:51