顯示具有 Javascript 標籤的文章。 顯示所有文章
顯示具有 Javascript 標籤的文章。 顯示所有文章

2018-08-11

[Javascript] 透過 Ajax 上傳檔案

Web 上傳檔案的功能,使用 ASP.NET 的 FileUpload 可以在後端直接操作該物件處理檔案 ; 使用 MVC 的 HttpPostedFileBase,前端 Submit 後,後端也能輕鬆的接收並處理。

如果前端改成 jQuery AJAX,後端是一般 aspx 網頁沒有 HttpPostedFileBase 接收時,那該怎麼做呢? 或許這種傳統的方法已經很少人會去使用,很不幸的我就遇到了... 所以特別備忘下來。

前端:
<script type="text/javascript">
 function UploadFile() {
  // FormData 物件
  var formData = new FormData();
  // HTML File 
  var fileInput = document.getElementById("fileInput");

  // 如果File支援檔案多選,就用迴圈來找出所有檔案
  for (var i = 0; i < fileInput.files.length; i++) {
   formData.append(fileInput.files[i].name, fileInput.files[i]);
  }
  
  // 其他要POST的欄位,例如HTML Text
  formData.append('username', $("#txtUsername").val());

  $.ajax({
   url: 'Upload.aspx',
   type: 'POST',
   data: formData, // 將整個FormData POST到後端
   processData: false, // 禁止將data自動轉換成query string
   contentType: false, //取消預設值'application/x-www-form-urlencoded; charset=UTF-8'
   success: function (data) {
    alert(data);
   }
  });
 }
</script>
<input type="text" id="txtUsername" />
<input type="file" id="fileInput" multiple="multiple" />
<input type="button" onclick="UploadFile()" value="UploadFile" />

後端:
// 一般欄位的接收方法使用Request.Form
string Username = Request.Form["username"];

// 迴圈找出所有File,注意是用Request.Files,而不是Request.Form
for (int i = 0; i < Request.Files.Count; i++)
{
 HttpPostedFile file = Request.Files[i];
 
 int fileSize = file.ContentLength;
 string fileName = file.FileName;
 System.IO.Stream fileContent = file.InputStream;

 // 將檔案儲存起來
 try
 {
  file.SaveAs(Server.MapPath("~/UploadFiles/") + fileName);
 }
 catch (Exception ex)
 {
  Response.Write(ex.Message);
 }
}



參考來源:stackOverflow

2017-07-15

[Javascript] 實作 Youtube 播放清單

最近收到需求,想要將公司網站上的產品介紹影片播放模式改成類似 Youtube 播放清單一樣(如下圖),左邊是影片、右邊是所有影片的列表,而且也要有影片的小縮圖,然後點選列表後左邊的影片就切換到該影片。

研究了一下,Youtube 很佛心的有提供服務可以使用,此次就使用了以下兩個服務:


傳入 Youtube 影片的 ID 給它,就會將該影片嵌入到 iFrame中。Sample Code 如下:
var tag = document.createElement('script');

// 引用 Youtube iframe API
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

var player;

function onYouTubeIframeAPIReady() {
    player = new YT.Player('ytplayer', {
        height: '',
        width: '',
        videoId: 'qCLayARYVjQ', // 預設播放的 Youtube ID
        playerVars : {
            wmode: 'opaque',
            rel: '0'
        },
        events: {
            'onStateChange': onPlayerStateChange
        }
    });
}

傳入 Youtube 影片的 ID 給它,就會回傳該影片的縮圖。Sample Code 如下:
<img src="https://i.ytimg.com/vi/[Youtube ID]/[影片解析度.jpg]" />

// [影片解析度]
// default.jpg:For the default thumbnail
// hqdefault.jpg:For the high quality thumbnail
// mqdefault.jpg:For the medium quality thumbnail
// sddefault.jpg:For the standard quality thumbnail
// maxresdefault.jpg:For the maximum thumbnail

使用了這兩個現成的服務後,技術面就沒有問題了,只要再加上 css 排版美化就 OK,可惜小弟我的 css 功力有限,已盡力讓它很類似了... 成果如下圖:


附上範例

參考來源:
Youtube iFrame APIstackOverflow

2017-06-08

[Javascript] 網頁如何同時使用不同版本的 jQuery

公司有個套裝平台,內建使用 jQuery 1.9.1 的版本,實在有點舊,直接換成新版又會造成套裝平台部份功能失效,不換又無法使用新版的功能,怎麼辦?

還好 jQuery 有個功能能讓網頁同時使用不同版本,那就是 jQuery.noConflict(true),只要宣告一個變數來代表另一個版本的 jQuery 就行了。

直接看 Code:
<!--系統內建的-->
<script type="text/javascript" src="jquery-1.9.1.min.js"></script>
<script type="text/javascript">
        // 正常使用 $ 來呼叫 jQuery 1.9.1
        $(function(){
                alert("jQuery 1.9.1");
        })
</script>


<!--自行載入的-->
<script type="text/javascript" src="jquery-1.12.4.min.js">
</script>
<script type="text/javascript">
        // 定義變數 jq1124 來代表 jQuery 1.12.4 的 $
        var jq1124 = jQuery.noConflict(true);
</script>
<script type="text/javascript">
        // 使用 jQuery 1.12.4
        jq1124(function(){
                alert("jQuery 1.12.4");
        });
 
        // 還是能使用 jQuery 1.9.1
        $(function(){
                alert("Still jQuery 1.9.1");
        });
</script>



參考來源:stackOverflow

2016-04-19

[Javascript] 站內搜尋 by Google Search API

最近被要求要製作站內搜尋,也就是嵌入 Google 搜尋引擎來查詢,查詢內容只限自訂的網站。這功能在很多網站上都有,網路上也有很多範例,但今天要介紹的是一個包好的 Javascript Library,很方便使用。

下圖是實作結果,預設搜尋的結果是顯示3筆,點More…會再加顯示3筆:

網頁只要下圖紅框這些 Code 就能執行:

Search.js 就是包好的 Library ,搜尋並顯示結果全都包好了,程式碼不難可自行了解一下,大概只有三個地方需要自行調整:
(1) 將 siteURL 改成要搜尋的 WebSite domain,以及設定 perPage,它是用來設定每次搜尋回傳的筆數,最大只能8筆。
var config = {
   siteURL: 'www.stackOverflow.com',  // The website you want to search. Change this to your website
   searchSite: true,
   type: 'web',  // include web、images、video、news…
   append: false,
   perPage: 3,  // A maximum of 8 is allowed by Google
   page: 0
}

(2) googleSearch(settings) 是主要的搜尋程式,基本上都不用改,如果要改的,就是More…的樣式吧。
// Checking if there are more pages with results, and deciding whether to show the More button:
var cursor = r.responseData.cursor;
if (+cursor.estimatedResultCount > (settings.page + 1) * settings.perPage) {
   $('
More...
', { id: 'more' }) .appendTo(searchResultsDiv) .click(function () { googleSearch({ append: true, page: settings.page + 1 }); $(this).fadeOut(); }); }

(3) result(r):定義回傳結果的樣式。


請注意! 這個 Search.js 是使用Google Search API,已於 2011/5/26 被 Google custom search API 取代,它還是能搜尋,只是每日有搜尋上限次數。


參考來源:stackOverflow

2015-10-24

[Javascript] 將 Table 匯出 Excel

將 Table 匯出 Excel 是個很常見的功能,這個 JS檔 是我用過最久還沒有出過問題的,很值得分享~

使用方法如下:
Import JS檔:
<script type="text/javascript" src="Export2Excel.js" />

在<body>中放上一個<iframe>:
<iframe id="iframe1" style="display:none"></iframe>

使用button執行匯出Excel:
<input type="button" onclick="fnExcelReport();" value="Export to Excel" />


參考來源:stackoverflow

[Javascript] 網頁回上一頁時,ScrollBar回到原來的位置

如標題說明,這功能被用在愈來愈多的網頁設計上,例如 Gmail,是一種 UX 設計。

實作概念是離開網頁時,將 ScrollBar 的 Position 記在 Cookie 中,當回到該網頁時,就能讓它回到上次離開時的位置了。

在網路上找到寫好的JS檔,使用方法如下:
Import JS檔:
<script src="scrollfix.js" type="text/javascript"></script>

BODY TAG 增加:
<body onunload="unloadP('UniquePageNameHereScroll')" onload="loadP('UniquePageNameHereScroll')"> 


參考來源:Cron's Web Tech Blog

2014-11-22

[Javascript] HTML Table 加上分頁的功能 - jQuery-TablePage

HTML Table 分頁的 Plugin 網上也是很多,但個人滿喜歡 jQuery-TablePage 這一個的,它的功能很單純,而且程式碼簡單易懂,容易自己擴充,想了解分頁功能是如何實現的人,可以來研究看看喔~

使用方法如下:
// 引用 jQuery.js 和 jQuery-TablePage.js
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery-tablepage.js"></script>

// 使用 TablePage 功能,參數1是放分頁的 HTML 物件,例如 span,參數2是每頁幾筆
$("#tbl").tablepage($("#table_page"), 5);

HTML Table 範例如下:
<table id="tbl" border="1">
    <thead>
  <tr >
   <th align="left" >Name</th>
   <th align="left" >Content</th>
  </tr>
    </thead>
 <tbody>
  <tr>
   <td>Name1</td>
   <td>Content1</td>
  <tr>
  <tr>
   <td>Name2</td>
   <td>Content2</td>
  <tr>
  <tr>
   <td>Name3</td>
   <td>Content3</td>
  <tr>
  <tr>
   <td>Name4</td>
   <td>Content4</td>
  <tr>
  <tr>
   <td>Name5</td>
   <td>Content5</td>
  <tr>
  <tr>
   <td>Name6</td>
   <td>Content6</td>
  <tr>
 </tbody>
</table>

// 放分頁的 HTML 物件
<span id='table_page'></span>

結果如下:




參考來源: jQuery-TablePage

[Javascript] 取代 GridView,改用 ajax + JSON 來組合 HTML Table

個人一直在尋找取代 GridView 的方法,網上也有很多 Plugin,一個一個試用後,最後還是覺得自己手動來組 HTML Table 是最有彈性的,雖然跟現成的 Plugin 比起來較費時,但是可以彈性應付各種需求。

以下是用 jQuery ajax + JSON 來組合 HTML Table 的做法,先記錄一下,如果之後還有找到更適合的再說囉~
<script type="text/javascript" src="/jquery.js"></script>

<script type="text/javascript">

 $(function () {
  
  $.ajax(
   {
      type:"post",
      url: "getJSON.aspx",
      data:encodeURI('mode=test&parm1=tim&parm2=timothy'),
      success:
       function (strResult) {
          var tr;
          var json = $.parseJSON(strResult);
      
          for (var i = 0; i < json.length; i++) {
             tr = $('<tr/>');
             tr.append("<td>" + json[i].Pd_Id + "</td>");
             tr.append("<td>" + json[i].PartNo + "</td>");
             $('#tbl').append(tr);
          }
  
          // 加上排序功能
          $('#tbl').tablesorter();

          // 加上分頁功能
          $("#tbl").tablepage($("#table_page"), 10);
       },
      error:
         function () {
            alert('getJSON error!');
         }
     }
  );   
 });
</script>

HTML Table 格式如下,只定義出 title,內容就交給 Javascript 放進來:
<table id="tbl" border="1">
   <thead>
      <tr>
         <th>Pd_Id</th>
         <th>PartNo</th>
      </tr>
   </thead>
</table>

如果需要分頁功能,請參考 TablePage,排序功能請參考 TableSorterSortTable

[Javascript] jQuery TableSorter - HTML Table 排序功能

在之前有介紹過一個 HTML Table 加上排序功能的做法 - SortTable,是個人僅次於 jQuery TableSorter 的另一個愛用 Sort Plugin。

個人在使用排序 Plugin 時,大都只用到兩個功能,也就是哪些欄位可以排序,哪些欄位不可排序,在此也記錄一下 jQuery TableSorter 這兩個功能要如何實現。

因為它是 base on jQuery,所以要 include jQuery.js:
// 引用 jQuery.js 和 TableSorter.js
<script src="jquery.js" type="text/javascript"></script>
<script src="tablesorter.js" type="text/javascript"></script>

注意!! Table 的 title,要有 <thead>,以及要用 <th>:
<table id="tbl">
    <thead>> 
        <tr> 
            <th>title1</th> 
            <th>title2</th> 
        </tr> 
    </thead> 
</table>

使用 TableSorter 加上排序功能:
$("#tbl").tablesorter();

以上步驟便完成所有欄位的排序功能,那要如何取消某些欄位的排序功能呢:
$("table").tablesorter({ 
 // 禁止第1和2欄位不可排序
    headers: { 
        1: { 
            sorter: false 
        }, 
        2: { 
            sorter: false 
        } 
 } 
}); 


參考來源:jQuery TableSorter

2014-10-25

[Javascript] 透過 Google Map API 計算最佳路徑 (Fastest Roundtrip)

最近接到的一個需求,送貨員每天要送的商品很多,希望能幫助他算出今天要去的地點最佳路徑,以節省時間。

最先想到的就是 Google Map 上有這功能,所以心想佛心來的 Google 大神一定有 API 可以使用,果不其然被我找到了。

實作出來的畫面,先決定好起始位置,再選擇今天的地點:

按 [開始計算最佳路徑(含回程)] 後,地圖上會畫出路徑圖,下方也顯示相關資訊:


製作成一個簡單的範例分享,範例說明如下:

1. 先載入相關 Javascript API
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" src="Scripts/BpTspSolver.js"></script>
<script type="text/javascript" src="Scripts/tsp.js"></script>

2. 網頁起始時,載入 Google Map
<body onLoad="onBodyLoad()">
...
function onBodyLoad() {
 google.load("maps", "3", { callback: init, other_params: "sensor=false" });
}

function init() {
 // 將 Google Map 載到 <div id="map"> 裡.
 // 呼叫 tsp.js 的 loadAtStart(<緯度>,<經度>,<高度>).
 loadAtStart(24.1676, 120.6593 ,13);
}
...
// 放 Google Map 的 div
<div id="map" style="height: 487px; position: relative; background-color: rgb(229, 227, 223); overflow: hidden;"></div>

3. 決定起始位置,並把 Google Map 位置移到該位置,以確定地址沒問題
function clickedStartAddress() {
    var txtAddress = document.getElementById("txtAddress");
    addAddress(txtAddress.value);
}

4. 選擇要前往的地點,這裡每按一次[>>]就會記錄下地點,並把 Google Map 移到該位置,以確定地址沒問題
function clickedDestAddress() {
    var objSelect2 = document.getElementById("sleCustList2");
    addAddress(objSelect.options[I].value);
}

5. 開始計算最佳路徑,呼叫 tsp.js 的 directions(<0:>,<是否用走路的>,<是否用開車的>,<是否避開高速公路>,<是否避開收費站>)。
<input id="calcButton" type="button" value="開始計算最佳路徑(含回程)" onClick="directions(0, false, false, false, false);">

計算並取得結果是在 tsp.js 的 onSolveCallback(myTsp),會直接將最佳路線圖套疊到 Google Map 上。除了這個,還有總時間、距離長度、以及行走順序等資訊。行走順序是將地址用分號(;)接起來的字串, 只要將結果自行處理成想顯示的樣子即可。


範例下載
參考來源:google-maps-tsp-solverOptiMap

2014-10-22

[Javascript] 網頁防止使用滑鼠右鍵和反白

以下記錄網頁如何禁止使用滑鼠右鍵和反白的功能。經測試結果,適用於 IE 11、Chrome 38、Firefox 33。

當然,網路上也有滿滿的破解方法,所以這也只能防君子,不防小人~


"禁止使用滑鼠右鍵"使用方法:
請將下面的 Javascript 貼在 <head></head> 之間即可。
<script type="text/javascript">  

function clickIE4(){
 if (event.button==2){
  return false;    
 }  
}     

function clickNS4(e){
 if (document.layers || document.getElementById && !document.all){
  if (e.which==2 || e.which==3){
   return false;      
  }    
 }  
}     

function OnDeny(){    
 if (event.ctrlKey || event.keyCode==78 && event.ctrlKey || event.altKey || event.altKey && event.keyCode==115){
  return false;    
 }  
}     

if (document.layers){
 document.captureEvents(Event.MOUSEDOWN);
 document.onmousedown = clickNS4;
 document.onkeydown = OnDeny();  
}
else if (document.all && !document.getElementById){
 document.onmousedown = clickIE4;    
 document.onkeydown = OnDeny();  
}

document.oncontextmenu = new Function("return false");  

</script>


"禁止反白"使用方法:
先增加下面的 <style> 於 <head></head> 之間。
<style> 
 body {  -moz-user-select:none; } 
</style>
再在 <body> 加上 onselectstart 屬性。
<body onselectstart="return false">


參考來源:StaceOverflow

[Javascript] 即時放大、縮小網頁字體

在設計網頁時,字型大小基本上都會預設一種而已,但是偶而還是需要即時放大字體才看的清楚,個人最常需要的情形就是用投影機投射時,因為光線、背影等等的關係,有時會造成畫面較不清楚。

之前都習慣用放大網頁比例來解決此問題,只是當你在 demo 網頁的版型時,放大比例就不好評估了,所以只好為了特定網頁來增加只變動字體大小的功能。

放大、縮小字型的功能,在網路上還滿多範例的,你可以用 CSS、Javascript or jQuery 等等方法來實現,在這裡我是使用最基礎的 Javascript 來做範例。

放大縮小的功能如下圖所示,在這裡只舉例放大和縮小這兩個功能:


這裡是用圖片來當作這兩個功能,然後在這兩個圖片加上 Javascript 的放大、縮小程式,分別叫做 increaseFontSize() 和 decreaseFontSize() :
<div>
 <a href="javascript:decreaseFontSize();">
    <img src="~/Content/images/fonts_s.jpg">
 </a>
 <a href="javascript:increaseFontSize();">
    <img src="~/Content/images/fonts_m.jpg">
 </a>
</div>

Javascript 程式碼如下,這裡有多增加限制最小字體是12,最大是16,預設值是13:
var min=12;
var max=16;

function increaseFontSize() {
   // 找出所有的<div>
   var p = document.getElementsByTagName('div');
   
   // 開始針對找到的<div>迴圈來改變字體
   for(i=0; i<p.length; i++) {
   
      // 先確定有fontSize的屬性
      if(p[i].style.fontSize) {
         var s = parseInt(p[i].style.fontSize.replace("px",""));
      } else {
         var s = 13;
      }
   
      if(s != max) {
         s += 1;
      }
   
      p[i].style.fontSize = s+"px";
   }
}

function decreaseFontSize() {
   var p = document.getElementsByTagName('div');
   
   for(i=0;i<p.length;i++) {
   
      if(p[i].style.fontSize) {
         var s = parseInt(p[i].style.fontSize.replace("px",""));
      } else {
         var s = 13;
      }
   
      if(s != min) {
         s -= 1;
      }
   
      p[i].style.fontSize = s+"px";
   }   
}


2013-11-03

[Javascript] 圖片輪播的效果

圖片輪播的效果以前大都用 Flash Plugin 來搞定,現在強大的 jQuery 也能辦到了,jQuery Plugin 叫做 Cycle,使用方法如下:

include jQuery.js 和 cycle.js
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.cycle.min.js"></script>

將要輪播的圖片用 div 包著:
<div id="div1">
    <img src="01.jpg" width="200" height="200"  />
    <img src="02.jpg" width="200" height="200"  />
    <img src="03.jpg" width="200" height="200"  />
</div>

接下來寫一些 javascript 效果就出來了,效果有很多種,可以參考 Cycle 官網
$('#div1').cycle({ 
    fx:'zoom', 
    sync:false, 
    delay:-2000 
});

如果圖片很多,那建議可以加上 Navigator ,不只能自動輪播,還能讓使用者自已手動換頁:
<style type="text/css">
    .nav { margin: 5px 0 }
    #nav a, #s7 strong { margin: 0 5px; padding: 3px 5px; border: 1px solid #ccc; background: #fc0; text-decoration: none }
    #nav a.activeSlide { background: #ea0 }
    #nav a:focus { outline: none; }
</style>

$(function() {
    $('#div1').before('<div id="nav" class="nav">').cycle({
        fx: 'turnDown',
        timeout: 3000,
        pager: '#nav'
    });
});

想看執行效果如何,可以下載 Sample 看看。


參考連結:jQuery Cycle Plugin

[Javascript] 快速將 Table 加上排序的功能 - SortTable

提到 Table 的排序 Plugin,大家第一個想到的應該是 jQuery 的 TableSorter,但今天要介紹的是另一個叫 SortTable,或許它沒 TableSorter 的功能那麼完整,但是對於基本的應用我倒覺得也是很方便又快速的。

最常用到的排序功能大概就是點 Table 的 Title 就能自動排序了,還有決定哪個 Title 不需要有排序的功能,SortTable 也都能做到,以下就介紹如何使用這兩個功能:

include SortTable.js,因為它不是 jQuery Plugin,所以不用再 include jQuery.js
// include SortTable.js
<script src="sorttable.js"></script> 

在要有排序功能的 Table 加上 class="sortable" 參數,注意 class 的內容值是 sortable,而不是 sorttable,只有一個 t:

// Table 加上 class="sortable" 參數
<table class="sortable"> 

預設是所有的欄位都加上排序功能,如果要指定哪個欄位不用排序功能,就可以加上以下 class 參數:

// td 加上 class="sorttable_nosort" 參數
<td class="sorttable_nosort"> 

這樣就完成了排序的功能囉~


參考來源:http://goo.gl/BFi1us

2013-06-04

[Javascript] HTML tag use visible or display ?

雖然這是很常見的功能,但總是容易把 visibility 和 display 搞混了...不得已只好筆記一下~

td1.style.visibility = "visible"; //顯示
td2.style.visibility = "hidden"; //不顯示,還是有占空間

td1.style.display = ""; //顯示
td2.style.display = "none"; //不顯示,不會占空間

$("#td1").show(); //顯示
$("#td2").hide(); //不顯示,不會占空間

2013-05-29

[Javascript] Javascript 擺放位置的觀念

無意間看到 In 91 整理出來的各種 Javascript 擺放位置的差異,覺得有助於釐清一些重要觀念,在此記錄一下~

兩個重要觀念:
  • 在使用 ASP.NET 後端註冊 Javascript 時,請盡量使用 System.Web.UI.ScriptManager 類別,少用 Response.Write,因為後者容易導致 CSS 失去效果以及有 UpdatePanel 時容易有 Javascript Error 的發生。
  • 並非要網頁載入就執行的 Javascript,請放到</html>之後,不要放在<body>裡,如此可減少網頁載入的時間。

下圖是截取自此篇文章,很清楚的區隔出不同的 Javascript 註冊方式所出現的位置~

參考來源: In 91

2013-04-17

[Javascript] 使用jQuery對ASP.NET常用元件取值和改值

記錄如何使用jQuery對ASP.NET的常用元件做取值和改值的動作,當然,以下的方法並不是唯一的方法~

TextBox and HiddenField
$('#<%=TextBox1.ClientID %>').val(); //取Text值
$('#<%=TextBox1.ClientID %>').val('Tim'); //改Text值

Label
$('#<%=Label1.ClientID %>').text(); //取Text值
$('#<%=Label1.ClientID %>').text('Tim'); //改Text值

DropDownList and ListBox
$('#<%=DropDownList1.ClientID %> option:selected').val(); //取Value值
$('#<%=DropDownList1.ClientID %> option:selected').text(); //取Text值
$("#<%=DropDownList1.ClientID %> option:selected").text('Tim'); //改Text值
$('#<%=DropDownList1.ClientID %>').val('Tim'); //依Text改選項
$('#<%=DropDownList1.ClientID %>')[0].selectedIndex = 3; //依Index改選項

CheckBox and RadioButton
$('#<%=Object1.ClientID %>').attr("checked"); //是否有打勾:打勾回傳true,沒打勾回傳false
$('#<%=Object1.ClientID %>').attr("checked", true); //打勾
$('#<%=Object1.ClientID %>').attr("checked", false); //取消打勾
$('#<%=Object1.ClientID %>').next('label').text(); //取Text值
$('#<%=Object1.ClientID %>').next('label').text('Tim'); //改Text值

CheckBoxList and RadioButtonList(跟CheckBoxList一樣,差別在type是radio)
下面的範例是CheckBoxList
//如果要取Value,要自行Add Attribute來記錄Value值(下面的範例是AddAttr),才比較好取Value值

 
 

//找出有打勾的
$("#<%=CheckBoxList1.ClientID %> input[type=checkbox]:checked").each(function() {
 $(this).parent().attr("AddAttr"); //是否有打勾:打勾回傳true,沒打勾回傳false
 $(this).attr("checked", true); //打勾
 $(this).attr("checked", false); //取消打勾
 $(this).parent().text(); //取Text值
 $(this).next('label').text('ccc'); //改Text值
});

至於如何取得UserControl的值,可參考此篇

2013-01-24

[Javascript] replace方法使用說明

在Javascript中,replace方法的使用跟.NET的不太一樣。

string.replace(regexp, replacement)

regexp:
第一個參數是要取代的值,是個Regex,必須用/  /ig包住,最後面接修飾選項,是可有可無的,常接的字有g和i(說明請看下方的表格)。/ /之間就放要被取代掉的東西的Regex規則。
[修飾選項-Modifiers]
g      找出所有符合的。
i 不區分大小寫。
m 多列模式。如果字串中包含了換行字元(\n),那字首(^)和字尾($)就會當作是同一行而不作用。
s
單列模式。點(.)代表任何字元,包括\n。
x 忽略空白字元。

replacement:
第二個參數則是要變成的字串。

範例:
// 取代斜線(/)變成空白,結果等於20130124
"2013/01/24".replace(/\//g, ""); 

// 將字串中非數字的取代成空白,結果等於20130124
"2013/01/24".replace(/\D/g, ""); 

// 以逗號(,)為分隔,將字串交換位置,結果等於Tim Lin。$1代表分隔後的第一個字串,以此類推
"Lin, Tim".replace(/(\w+)\s*,\s*(\w+)/, "$2 $1");

// 將單字的第一個字變大寫,結果等於Tim Lin
"tim lin".replace(/\b\w+\b/g, function(word) {
                                  return word.substring(0,1).toUpperCase() + word.substring(1);
                              });

參考來源:Regular-Expressions.info

2013-01-16

[Javascript] 在不用JSON的情況下,如何建立物件

Javascript物件表示法-JSON的介紹後,再來整理一下在不用JSON時,要怎麼建立物件。

簡單做一個物件,假設它只用一次而已,因為如果要用很多次的話,下面的方法就要複製很多次,不是很方便:
//宣告物件oUser
var oUser = new Object; 

//建立屬性和方法
oUser.name = 'Tim'; 
oUser.year = 30; 
oUser.GetName = function() { 
    alert(this.name); 
}; 

如果想多次使用,那可以包裝一下,再透過Prototype的寫法來宣告物件,以提供多次new出來使用:
//先建一個空的 function 
function User() { }; 

//再使用Prototype建立User()的屬性和方法 
User.prototype.name = 'Tim'; 
User.prototype.year = 30; 
User.prototype.GetName = function() { 
    alert(這款車的顏色是 ' + this.name); 
}; 
 
//就可以new很多次了
var oUser1 = new User(); 
var oUser2 = new User(); 

參考來源:StackOverflow

2013-01-04

[Javascript] 讓TextBox只能輸入數字

這是無意間找到的方法,簡單又有效~

只能輸入數字
<asp:TextBox runat="Server" id="txtNumber" onKeypress="if(event.keyCode < 48 || event.keyCode > 57) { event.returnValue = false; }" />
Javascript Key Codes

參考來源:Tsung's Blog