javascript 沒有支援 java的 replaceAll ,不過可以用RegExp來達成 :
ex1 : replaceAll 小數點
var s1 = "A.B.C";
alert(s1.replace(/\./g,"_")); // "A_B_C"
ex2 : replaceAll 空白
var s2 = "A B C";
alert(s1.replace(/\s+/g,"_")); // "A_B_C"
javascript 沒有支援 java的 replaceAll ,不過可以用RegExp來達成 :
ex1 : replaceAll 小數點
var s1 = "A.B.C";
alert(s1.replace(/\./g,"_")); // "A_B_C"
ex2 : replaceAll 空白
var s2 = "A B C";
alert(s1.replace(/\s+/g,"_")); // "A_B_C"
JSCookMenu 網址
JSCookMenu 是用 javascript 產生主選單的程式,使用方式很簡單,只要給它陣列就完成了,而且提供六種很酷的樣式讓你選擇。
而且是免費... 佛心來的...
跟之前的 CheckBoxList 例子很像,ASP.NET 的 RadioButtonList 在 HTML 也是由 Table + checkbox 組成,如果要用 JavaScript 判斷 User 選了那個 RadioBox,可以參考以下範例:
var selValue;
var table = document.getElementById("RadioButtonList1");
for(i=0;i<table.rows[0].cells.length;i++)
if(table.rows[0].cells[i].childNodes[0].checked == true)
selValue = table.rows[0].cells[i].childNodes[0].value;
要注意的是,這裡的RadioButtionList是用水平橫式的(Horizontal),如果用直式的(Vertical),table.rows[0].cells[i]要改為table.rows[i].cells[0]。
var i=null;
var obj = document.getElementById("DropDownList1");
for (i=0; i< obj.options.length; i++)
{
if (obj.options[i].value == strDefault) // strDefault == 預設值
{
obj.selectedIndex = i;
return;
}
}
var arrData = new Array("Saab","Volvo","BMW"); //重組下拉選單內容
var strDefault = "BMW"; // 預設值
var dd1 = document.getElementById("DropDownList1");
//清空 dropdownlist
while(dd1.options.length>0)
dd1.options.remove(0);
var option = null;
for (i=0; i< arrData.length; i++)
{
option = document.createElement("option");
option.text = arrData[i];
option.value = arrData[i];
if (strDefault == arrData[i])
option.setAttribute("selected","selected");
dd1.options.add(option);
}
function setCheckBox_Checking(a_TableID)
{
/*
Function : 將 Table 裡的 Checkbox 全選或全不選
Description : 使用於 Table 下的整行選取(DataGrid 也可使用),第一列不選
Arguments : [1]=[true/false] (選擇否),
[2]=[0/number] (選擇 checkbox 在的欄位)
Date : 2006/6/21
*/
var obj = document.all[a_TableID];
var oRow = null; //obj.rows[obj.rows.length-1];
var oCell = null; //obj.rows[0].cells[0];
var oChkCell = null;
var oItem = null;
var iCellCount = 0;
//
// 辨斷傳入的參數
var bChecked,iCol;
if (arguments[1] == null) bChecked = true;
else bChecked = arguments[1];
if (arguments[2] == null) iCol = 0;
else iCol = arguments[2];
//lert(asStartPNo);
var iRow = obj.rows.length;
for(var i = 0 ; i < iRow ; i++)
{
oRow = obj.rows[i];
iCellCount = oRow.cells.length;
//
if(iCol <= iCellCount ){ // 設定欄只能小於總欄
oChkCell = oRow.cells[iCol];
oItem = oChkCell.childNodes.item(0);
// 辨斷是否為 Checkbox
if(oItem.toString() == "[object]" && oItem.type.toLowerCase() == "checkbox" )
oItem.checked = bChecked;
}
}
}
如果XML要儲存在網頁上,有時會因為特殊字元產生錯誤,可以先寫個轉換的 function :
function XMLEncode(str)
{
str=Trim(str);
str=str.replace("&","&");
str=str.replace("<","<");
str=str.replace(">",">");
str=str.replace("'","'");
str=str.replace("\"",""");
return str;
}
/**************************
開啟新視窗
***************************/
function openWindows(a_Url){
var sUrl = a_Url;
var sTitle = "開新視窗"; // 視窗標題
var sToolbar = "no"; //
var sLocation = "no"; //位置列
var sDirectories = "no"; //目錄
var sStatus = "no"; // 狀態列
var sMenubar = "no";
var sScrollbars = "yes";
var sResizable = "no";
var sWidth = "600";
var sHeight = "550";
var sParams = "toolbar=" + sToolbar + ",directories=" + sDirectories + ",status=" + sStatus + ",menubar=" + sMenubar + ",scrollbars=" + sScrollbars + ",resizable=" + sResizable + ",width=" + sWidth + ",height=" + sHeight;
//alert(sParams);
//
window.open(sUrl,sTitle,sParams);
}
符號 |
表示式 |
說明或範例 |
不成立字串 |
. |
a. |
表示任何字元。 含字母 "a" 以及其後任一個字元的字串。 Ex: "ab", "bac" |
"a", "ba" |
重覆字串 |
|||
* |
ab* |
表示沒有或更多字元。 "ab*":表示一個字串有一個a後面跟著零個或若干個b。 Ex: "a", "ab", "abbb" |
|
+ |
ab+ |
一次或更多字元。 "ab+":表示一個字串有一個a後面跟著至少一個b或者更多 Ex: “ab”,”abbbb” |
|
? |
ab? |
沒有或一次字元。 ab?":表示一個字串有一個a後面跟著零個或者一個b Ex: “a”,”ab” |
|
[] |
[13579] |
方括號表示某些字元允許在一個字串中的某一特定位置出現。 包含 "1" 或 "3" 或 "5" 或 "7" 或 "9" 的字串。 Ex: "a3b", "1xy" |
"y2k" |
|
[0-9] |
含數字之字串 |
不含數字之字串 |
|
[a-z0-9] |
含數字或小寫字母之字串 |
不含數字及小寫字母之字串 |
|
[a-zA-Z0-9] |
含數字或字母之字串 |
不含數字及字母之字串 |
|
b[aeiou]t |
"bat", "bet", "bit", "bot", "but" |
"bxt", "bzt" |
|
^[a-zA-Z] |
表示一個以字母開頭的字串 |
|
|
[0-9]% |
表示一個百分號前有一位元的數位 |
|
|
[a-zA-Z0-9]$ |
表示一個字串以一個逗號後面跟著一個字母或數位結束 |
|
{} |
ab{2} |
用以表示重復次數的範圍。 表示一個字串有一個a跟著2個b。 Ex: "abb" |
|
|
ab{2,} |
表示一個字串有一個a跟著至少2個b |
|
|
ab{3,5} |
表示一個字串有一個a跟著3到5個b |
|
字串位置 |
|||
^ |
^xy |
以 "xy" 開始的字串 Ex: "xyz", "xyab" |
"axy", "bxy" |
$ |
xy$ |
以 "xy" 結尾的字串 Ex: 例如:"axy", "abxy" |
"xya", "xyb" |
[^] |
[^0-9] |
不希望出現的字元,'^'應在方括號裏的第一位。 不含數字之字串
|
含數字之字串 |
|
%[^a-zA-Z]% |
兩個百分號中不應該出現字母 |
|
|
[^aeiouAEIOU] |
不含母音之字串 |
含母音之字串 |
|
[^\^] |
不含 "^" 之字串,例如:"xyz", "abc" |
"xy^", "a^bc" |
特殊字元 |
|||
\d |
|
數字0~9 |
|
\D |
|
非數字 |
|
\w |
|
數字、字母、底線 |
|
\W |
|
非 \w |
|
\s |
|
空白字元 + \r\t\n\f |
|
\S |
|
非 \s |
|
| |
(b¦cd)ef |
表示”或” "bef"或"cdef" |
|
\ |
^\^ |
跳脫字元,將特殊符號的義意去除,^.$()¦*+?{\"這些字元前加上跳脫字元'\' 字首必須是^ |
|
|
|
|
|
/**** LTrim(string):去除左空格 ****/
function LTrim(str) {
return str.replace(/^[ \t\n\r]+/g, "");
}
/**** RTrim(string):去除右空格 ****/
function RTrim(str) {
return str.replace(/[ \t\n\r]+$/g, "");
}
/**** Trim(string):去除前後空格 ****/
function Trim(str){
return RTrim(LTrim(str));
}
function checkCheckBox(sListID){
var sArray;
var bIsChecked = false;
sArray = sListID.split(";"); // 使用 ";" 分隔所有的 CheckList.ID
for(var i=0;i<sArray.length;i++){
var oCheck = document.all[sArray[i]];
if(oCheck.checked)
bIsChecked = true; // 其中之一有選擇
}
return bIsChecked;
}
// 身份證字號
function checkID(string) {
re = /^[A-Z]\d{9}$/;
if (re.test(string))
return true;
}
// 信用卡號
function checkCreditCard(string) {
re = /^\d{4}-\d{4}-\d{4}-\d{4}$/;
// re = /^(\d{4}-){3}\d{4}$/;
if (re.test(string))
return true;
}
// 英文名稱
function checkEnglishName(string) {
re1 = /^[A-Za-z\-]+\s+[A-Za-z\-]+$/;
re2 = /^[A-Za-z\-]+\s+[A-Za-z\-]+\s+[A-Za-z\-]+$/;
if (re1.test(string) || re2.test(string))
return true;
}
// Email
function checkEmail(string) {
re = /^.+@.+\..{2,3}$/;
if (re.test(string))
return true;
}
// 數字
function checkNumber(string) {
re = /^\d+$/;
if (re.test(string))
return true;
}
// TextBox
function checkValue(aTextID)
{
re = /\S/;
var oText = document.all[aTextID];
var sVal = Trim(oText.value);
if(!re.test(sVal)){
try{
alert("[" + oText.title + "]" + " 必需填寫!")
event.returnValue = false;
oText.focus();
return false;
}
catch (e){
//alert(e.description);
}
}
return true;
}
ASP.NET 的 CheckBoxList 是用這樣的方式組合的:
<table><tr><td><input type="checkbox" /><label >TextName</label></td></tr></table>
如果要以TextName 來比對,用 javascript 決定那些 chekbox 要 disabled,可以參考下面 function ,輸入值 chkID 是CheckBoxList 的 ClientID,listText 則要用 CheckBoxList.Item.Text 在 Client 組合成 string[] array,如 var listText = new Array("aaa","bbb","ccc");
function SetCheckBoxlistDisabled(chkID,listText){
var objChk = document.getElementById(chkID);
for(i=0;i<objChk.rows.length;i++){
objChk.rows[i].cells[0].childNodes[0].disabled = true; //預設
for(j=0;j<listText.length;j++){ // 逐一比對 Test
if(listText[j] == objChk.rows[i].cells[0].innerText){
objChk.rows[i].cells[0].childNodes[0].disabled = false;
}
}
}
}
在ASP.NET控制項中,CheckBoxList 是用 Table 加 checkbox 組合而成的,如果要用 javascript 做到全選或全部取消,需要一點小技巧
輸入參數 checkBoxID 是 CheckBoxList 的 ClientID, TRUE_OR_FALSE 要全選輸入true 或取消 false:
function SetCheckBoxListChecked(checkBoxID,TRUE_OR_FALSE){
var table = document.getElementById(checkBoxID);
for(i=0;i<table.rows.length;i++){
table.rows[i].cells[0].childNodes[0].checked = TRUE_OR_FALSE;
}
}