常用的js方法,包括表单校验的一些方法,下拉菜单常用的方法等等

原创 2011年01月12日 09:48:00

/**
 * 对JSON对象转换为字符串.
 * @param {json对象} json
 * @return {json字符串}
 */
function jsonObj2Str(json) {
        var str = "{";
        for (prop in json) {
                str += prop + ":" + json[prop] + ",";
        }
        str = str.substr(0, str.length - 1);
        str += "}";
        return str;
}

/**
 * 将json字符串转换为json对象.
 * @param {json字符串} jsonstr
 * @return {json对象}
 */
function jsonStr2Obj(jsonstr) {
         return eval("("+jsonstr+")");
}

/**
 * 得到一个元素的left坐标值.
 * @param {dom对象} obj
 * @return {位置值}
 */
function getLeft(obj){
        var offset=e.offsetLeft;
        if(e.offsetParent!=null) offset+=getLeft(e.offsetParent);
        return offset;
}

/**
 * 得到一个元素的绝对位置的top坐标值.
 * @param {dom对象} obj
 * @return {位置值}
 */
function getTop(obj){
        var offset=e.offsetTop;
        if(e.offsetParent!=null) offset+=getTop(e.offsetParent);
        return offset;
}

/**
 * 删除一个字符串的左右空格.
 * @param {原始字符串} str
 * @return {删除空格之后的字符串}
 */
function  trim(str)

   return  str.replace(/(^/s*)|(/s*$)/g,""); 
}

/**
 * 根据id取出一个元素.
 * @param {元素id值} str
 * @return {dom对象}
 */
function $(str) {
        return document.getElementById(str);
}

/**
 * 按name获取一个对象.
 * @param {元素name值} str
 * @return {根据name返回的第一个对象}
 */
function $byName(str) {
        var arr = document.getElementsByName(str);
        if (arr)
                return arr[0];
        else
                return null;
}

/***************以下方法和表单验证相关*************************************************/
/**
 * 返回非空字符串,如果有默认值就返回默认字符串.
 * @param {要进行转换的原字符串} str
 * @param {默认值} defaultStr
 * @return {返回结果}
 */
function notNull(str, defaultStr) {
        if (typeof(str) == "undefined" || str == null || str == '') {
                if (defaultStr)
                        return defaultStr;
                else
                        return '';
        } else {
                return str;
        }

/**
 * 比较两个日期大小.
 * @param {较小日期的文本框id} smallDate
 * @param {较大日期的文本框id} bigDate
 * @param {出错的提示信息} msg
 */
function compareTwoDate(smallDate, bigDate, msg) {
        var v1 = $(smallDate).value;
        var v2 = $(bigDate).value;
        if (v1 >= v2) {
                alert(msg);
                                v2.focus();
                return false;
        }
        return true;
}

/**
 * 比较两个金额大小的方法.
 * @param {较小的金额} smallNum
 * @param {较大的金额} bigNum
 * @param {出错提示信息} msg
 * @return {Boolean}
 */
function compareTwoNum(smallNum, bigNum, msg) {
        var v1 = $(smallNum).value;
        var v2 = $(bigNum).value;
        if (parseFloat(v1) >= parseFloat(v2)) {
                alert(msg);
                                v2.focus();
                return false;
        }
        return true;
}

/**
 * 检查文本框的长度是否超出指定长度.
 * @param {文本id} textId
 * @param {文本框的最大长度} len
 * @param {文本框描述内容} msg
 * @return {有错就返回false,否则返回true}
 */
function checkLength(textId, len, msg) {
        obj = $(textId);
        str = obj.value;
        str = str.replace(/[^/x00-/xff]/g, "**");
        realLen = str.length;
        if (realLen > len) {
                alert("[" + msg + "]" + "长度最大为" + len + "位," + "请重新输入!/n注意:一个汉字占2位。");
                obj.focus();
                return false;
        } else
                return true;
}

/**
 * 判断某个文本框不可以为空.
 * @param {文本框id} textId
 * @param {文本框描述内容} msg
 * @return {有错就返回false,否则返回true}
 */
function checkIfEmpty(textId, msg) {
        var textObj = $(textId);
        var textValue = textObj.value;
        if (trim(textValue) == '') {
                alert('[' + msg + ']不得为空!');
                textObj.focus();
                return false;
        } else {
                return true;
        }
}

/**
 * 判断指定文本框内容必须为邮件.
 * @param {文本框id} textId
 * @param {文本框描述} msg
 * @return {如果是邮件内容就返回true否则返回false}
 */
function checkIsMail(textId, msg) {
        var obj = $(textId);
        if (!_isEmail(obj.value)) {
                alert('[' + msg + ']不是合法的邮件地址!');
                obj.focus();
                return false;
        } else
                return true;
}

/**
 * 验证是不是邮件.
 * @param {要验证的字符串} strEmail
 * @return {Boolean}
 */
function _isEmail(strEmail) {
        //接下来的验证是否有两个以上的‘.’号,有的话就是错的!
        var first = strEmail.indexOf('.'); 
        if (strEmail.indexOf('@')== -1) {
                return false;
        }
        var tempStr = strEmail.substring(first + 1);
         if (tempStr.indexOf('.') != -1) {
                return false;
        }
        if (strEmail
                        .search(/^/w+((-/w+)|(/./w+))*/@[A-Za-z0-9]+((/.|-)[A-Za-z0-9]+)*/.[A-Za-z0-9]+$/) != -1) {
                return true;
        } else
                return false;
}

/**
 * 判断某个文本框是否数字.
 * @param {文本框id} textId
 * @param {文本框描述内容} msg
 * @return {Boolean}
 */
function checkIsNum(textId, msg) {
        obj = $(textId);
        if (isNaN(obj.value)) {
                alert('[' + msg + ']必须为数字。');
                obj.focus();
                return false;
        } else
                return true;
}

/**
 * 判断某个文本框是否含有非法字符.
 * @param {文本框的id} textId
 * @param {文本框描述内容} msg
 * @return {有错就返回false否则返回true}
 */
function checkIsValid(textId, msg) {
        obj = $(textId);
        if (!_isValidString(obj.value, '[' + msg + ']不得含有非法字符。')) {
                obj.focus();
                return false;
        }
        return true;
}

/**
 * 判断是不是合法字符串.
 * @param {要进行判断的字符串} szStr
 * @param {文本描述} errMsg
 * @return {合法则返回true否则返回false}
 */
function _isValidString(szStr,errMsg) {
        voidChar = "'/"><`~!@#$%^&/(/)()!¥……??“”‘’*";
        for (var i = 0; i < voidChar.length; i++) {
                aChar = voidChar.substring(i, i + 1);
                if (szStr.indexOf(aChar) > -1){
                        alert(errMsg)
                        return false;
                }
        }
        return true;
}

/*************** 以下方法和下拉菜单相关*************************************************/
/**
 * 控制下拉菜单不可以为-1(未选择情况value=-1)
 * @param {下拉菜单id} selectId
 * @param {下拉菜单描述内容} msg
 * @param {下拉菜单的空值对应的value,默认为-1} nullValue
 * @return {Boolean}
 */
function checkChooseSelect(selectId, msg ,nullValue) {
        var obj = $(selectId);
        if (obj.value == notNull(nullValue,'-1')) {
                alert('[' + msg + ']必选!');
                obj.focus();
                return false;
        } else
                return true;
}

/**
 * 得到下拉菜单的显示的文字.
 * @param {下拉菜单dom对象} selectObj
 * @return {返回下拉菜单的显示的"文本"}
 */
function getSelectText(selectObj) {
       return selectObj.options[selectObj.selectedIndex].text;
}

/**
 * 得到下拉菜单的显示的值.
 * @param {下拉菜单dom对象} selectObj
 * @return {得到下拉菜单的显示的"值"}
 */
function getSelectValue(selectObj) {
        return selectObj.options[selectObj.selectedIndex].value;
}

/**
 * 设置下拉菜单的选择状态到指定的值.
 * @param {下拉菜单对象} obj
 * @param {要选择的值} value
 */
function setSelectValue(obj, value) {
        for (i = obj.options.length - 1; i >= 0; i--) {
                if (obj.options[i].value == value) {
                        obj.options[i].selected = true;
                        return;
                }
        }
}

/**
 * 根据键值串的内容进行下拉菜单的动态组装
 * @param {要进行下拉菜单组装的dom对象} obj
 * @param {键值对用,和;分割,例如'1,男;2,女;3,未知'} valAndText
 */
function setSelectContent(obj,valAndText){
        if(trim(valAndText)==''){
                alert('没有要进行组装下拉菜单的数据!');
                return false;               
        }
        clearSelect(obj);
        var keyandvalues = valAndText.split(';');
        for(var i=0;i<keyandvalues.length;i++){
                var arr = keyandvalues[i].split(',');
                if(arr){
                        var value =arr[0];
                        var text =arr[1];
                        var objOption = new Option(text,value);
                        obj.add(objOption);
                }
        }
}

/**
 * 清空下拉菜单里面的内容.
 * @param {下拉菜单对象} obj
 */
function clearSelect(obj) {
    for (var i=obj.options.length; i >0; i--) {
        obj.remove(0);
    }       
}

/*************** 以下方法和多选框相关*************************************************/
/**
 * 返回选中的checks的id组成的字符串,逗号隔开.
 * @param {checks数组} checks
 * @return 选择的id组成的字符串
 */
function getCheckedIds(checks){
        var selectedValue = '';
        var len = checks.length;
        for(var index=0; index<len; index++) {
        if(checks[index].checked==true) {
            selectedValue +=  checks[index].value+",";
        }
    }
        if(selectedValue.length>0)
                return selectedValue.substring(0,selectedValue.length-1);
    return selectedValue;
}

js中常用方法总结

JS选取DOM元素的方法 注意:原生JS选取DOM元素比使用jQuery类库选取要快很多 1、通过ID选取元素 document.getElementById('myid'); 2、通过CLA...
  • u010278162
  • u010278162
  • 2017年07月27日 22:22
  • 206

常用js方法的封装

原来来自:这里写链接内容
  • wupd2014
  • wupd2014
  • 2016年05月05日 19:17
  • 354

原生JS常用的一些方法

JS选取DOM元素的方法 注意:原生JS选取DOM元素比使用jQuery类库选取要快很多 1、通过ID选取元素 document.getElementById('myid'); 2、通过CLASS选取...
  • kongjunchao159
  • kongjunchao159
  • 2015年10月31日 13:25
  • 2567

项目中常用js方法整理common.js

抽空把项目中常用js方法整理成了common.js,都是网上搜集而来的,大家一起分享吧。 var h = {}; h.get = function (url, data, ok, error) { ...
  • sweetsuzyhyf
  • sweetsuzyhyf
  • 2014年12月12日 09:27
  • 1913

JS对象Object的常用方法汇总

//Object.assign函数 //将来自一个或多个源对象中的值复制到一个目标对象 var first = {name : 'kong'}; var last = {age : 18}; var ...
  • kongjunchao159
  • kongjunchao159
  • 2017年04月11日 15:06
  • 798

js string()常用方法总结

创建一个String 对象,语法:new String(stringValue),这个调用会将参数转换为字符串,并作为一个String 对象。事实上任何一个字符串常量都是一个String对象,可以将其...
  • zhanghow
  • zhanghow
  • 2016年11月21日 19:25
  • 700

js常用的几个方法封装

var shelleyObj=(function(){         /**************获取元素*****************/         //根据id获取元素        ...
  • wuli44024
  • wuli44024
  • 2016年08月29日 10:18
  • 1930

js中String对象和Array对象的常用方法和属性

String对象有哪些方法? String对象的属性有: (1) length (返回字符串的字符长度) (2) prototype (3) constructor ...
  • xiaobing_hope
  • xiaobing_hope
  • 2016年09月07日 16:43
  • 1431

String类中常用方法归纳

版权声明:本文为博主原创文章,未经博主允许不得转载。 [java] view plain copy   String类中提供了大量的操作方法,这里例举13种关于String类...
  • melodysky
  • melodysky
  • 2016年07月20日 13:27
  • 4774

js调试的常用五种方式

1. 直接在js代码中加入断点调试 直接在你的js代码中加入断点进行调试 2. 设置在DOM node发生变化时触发断点 有时候你会发现DOM不受你的控制,自己会...
  • david136796
  • david136796
  • 2016年04月13日 17:25
  • 296
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:常用的js方法,包括表单校验的一些方法,下拉菜单常用的方法等等
举报原因:
原因补充:

(最多只允许输入30个字)