2008-08-05 27 views
30

Làm cách nào để xóa thông số chuỗi dữ liệu Javascript trong sự kiện neo OnClick?Báo giá gấp ba lần? Làm thế nào để tôi delimit một tham số chuỗi databound Javascript trong ASP.NET?

  • Tôi có thẻ neo trong điều khiển Bộ lặp ASP.NET.
  • Sự kiện OnClick của neo chứa cuộc gọi đến hàm Javascript.
  • Hàm Javascript lấy một chuỗi cho tham số đầu vào của nó.
  • Tham số chuỗi được điền bằng giá trị databound từ Bộ lặp.

Tôi cần "dấu ngoặc kép" cho số Container.DataItem.
Tôi cần 'báo giá đơn' cho số OnClick.

Và tôi vẫn cần một dấu tách khác (dấu ngoặc kép?) Cho thông số chuỗi đầu vào của lệnh gọi hàm Javascript.

Vì tôi không thể sử dụng 'dấu ngoặc đơn' một lần nữa, làm cách nào để đảm bảo hàm Javascript biết tham số đầu vào là một chuỗi chứ không phải số nguyên?

Nếu không có dấu ngoặc kép thêm xung quanh tham số chuỗi đầu vào, hàm Javascript cho biết tôi đang chuyển trong một số nguyên.

Cổ vũ trước cho bất kỳ kiến ​​thức nào bạn có thể thả.

Các neo:

<a id="aShowHide" onclick='ToggleDisplay(<%# DataBinder.Eval(Container.DataItem, "JobCode") %>);' >Show/Hide</a>  

và đây là Javascript:

<script language="JavaScript" type="text/javascript"> 
/* Shows/Hides the Jobs Div */ 
function ToggleDisplay(jobCode) 
{ 
    /* Each div has its ID set dynamically ('d' plus the JobCode) */ 
    var elem = document.getElementById('d' + jobCode); 

    if (elem) 
    { 
     if (elem.style.display != 'block') 
     { 
      elem.style.display = 'block'; 
      elem.style.visibility = 'visible'; 
     } 
     else 
     { 
      elem.style.display = 'none'; 
      elem.style.visibility = 'hidden'; 
     } 
    } 
} 
</script> 

Trả lời

20

Tôi đã gặp sự cố tương tự gần đây và cách duy nhất để giải quyết vấn đề là sử dụng các mã HTML cũ đơn cho một (&#39;) và dấu ngoặc kép (&#34;).

Mã nguồn hoàn toàn lộn xộn, nhưng nó hoạt động.

Hãy thử

<a id="aShowHide" onclick='ToggleDisplay(&#34;<%# DataBinder.Eval(Container.DataItem, "JobCode") %>&#34;);'>Show/Hide</a> 

hoặc

<a id="aShowHide" onclick='ToggleDisplay(&#39;<%# DataBinder.Eval(Container.DataItem, "JobCode") %>&#39;);'>Show/Hide</a> 
+0

Winna !!! Cảm ơn Lubos. Mã HTML đã sắp xếp nó (và yep, nó lộn xộn, nhưng nó hoạt động). Giải pháp: onclick = 'ToggleDisplay (" <% # DataBinder.Eval (Container.DataItem, "JOB_Code")%> ");' – Dhaust

+2

" là dấu ngoặc kép. ' là trích dẫn đơn – Mahesh

0

Nếu không có dấu ngoặc kép phụ xung quanh tham số chuỗi đầu vào, chức năng Javascript nghĩ rằng tôi đang đi qua trong một số nguyên .

Bạn có thể thực hiện một số chức năng chuỗi thô sơ để buộc JavaScript biến nó thành chuỗi không? Giống như

value = value + "" 
0

Thử đặt văn bản bổ sung bên trong khối tập lệnh phía máy chủ và ghép nối.

onclick='<%# "ToggleDisplay(""" & DataBinder.Eval(Container.DataItem, "JobCode") & """);" %>' 

Chỉnh sửa: Tôi khá chắc chắn bạn chỉ có thể sử dụng dấu ngoặc kép bên ngoài khối tập lệnh.

0

Đi qua biến để hoạt động mà không nháy đơn hoặc nháy kép

<html> 
    <head> 
    </head> 
    <body> 
     <script language="javascript"> 
     function hello(id, bu) 
     { 
      alert(id+ bu); 
     } 
     </script> 
     <a href ="javascript: 
      var x = &#34;12&#34;; 
      var y = &#34;fmo&#34;; 
      hello(x,y)">test</a> 
    </body> 
</html> 
3
onclick='javascript:ToggleDisplay("<%# DataBinder.Eval(Container.DataItem, "JobCode")%> "); ' 

Sử dụng như trên.

Các vấn đề liên quan