以下代碼可放在一個js文件中,以便通用: //獲取指定表單中指定標簽對象 function getElements(formId, label) { var form = document.getElementById(formId);/* 獲取表單引用(對象) */ var elements = ...
以下代碼可放在一個js文件中,以便通用:
//獲取指定表單中指定標簽對象
function getElements(formId, label) {
var form = document.getElementById(formId);/* 獲取表單引用(對象) */
var elements = [];
var tagElements = form.getElementsByTagName(label);/* 獲取表單中指定標簽名的元素引用(對象)數組 */
for (var j = 0; j < tagElements.length; j++) {
elements.push(tagElements[j]);
}
return elements;
}
// ----註:tagElements[j].name這種寫法並不能確定該對象是哪一種類型的標簽,如果是單覆選按鈕標簽,則需要判斷是否被選中的情況,所以要寫一個方法過濾一下:
// 根據標簽type獲取標簽name,value(過濾)
function typeFilter(element) {
var label = [];
switch (element.type.toLowerCase()) { /* 表單元素引用數組.元素類型.字元串轉小寫 */
case 'submit':
case 'hidden':
case 'password':
case 'text':
label.push({
name : element.name,/* 自定義的列名:列值 */
value : element.value
});
return label;
case 'checkbox':
case 'radio':
if (element.checked)
label.push({
name : element.name,/* 自定義的列名:列值 */
value : element.value
});
return label;
}
return false;
}
//---註:case項可自定義,比如去掉 case 'submit'這種沒意義的可能。
// 獲取指定表單的指定標簽的name和value,並存到一個數組裡,形參label可傳入'*',表示全部標簽
function get_form_label_name_value(formId, label) {
var elements = getElements(formId, label);
var group = [];
var one = [];
for (var i = 0; i < elements.length; i++) {
one = typeFilter(elements[i]);
group.push({
name : one[0].name,/* 自定義的列名:列值 */
value : one[0].value
});
}
return group;
}
//-----------------------------------------------------------------------------------
//前臺調用例子:
//function show() {
// var NV = get_form_label_name_value('表單id','標簽如input');
// if (NV != null && NV.length > 0) {
// for (var i = 0; i < NV.length; i++) {
// if (NV[i].name != "") { /*這個if不加也可以,但是為了避免特殊情況,加上反而更有利於之後存入資料庫等操作*/
// alert(NV[i].name);
// alert(NV[i].value);
// }
// }
// }
//}