1秋泳、form表單中的數(shù)據(jù)修改:
var param = $("#form").serializeArray();
//param的表現(xiàn)形式如下:param=({"name":"name", "value":"value"}...);
const index = param.findIndex(item => item.name ==="modifyname");
param[index] = Object.assign(param[index], {value:"new-value"});
則可以修改 param中 name為modifyname的數(shù)據(jù)值為“new-value”;
2、刪除多余的字段
var param=$("#form").serializeArray();
$.each(param,function(index,item) {
if (item && item.name =="del-name") {
param.splice(index, 1);
? ? ? ? ? return false;
? ? ? }
});
3饥脑、多個(gè)form表單數(shù)據(jù)合并
var param =?$("#form").serializeArray().concat(?$("#form1").serializeArray());
var vparam =?$("#form :visible")..serializeArray();? //僅獲取可見(jiàn)form元素的值
4择卦、form表單恢復(fù)時(shí)鳍徽,隱藏的input數(shù)據(jù)恢復(fù)
$("#form input:hidden").val("");
5曲伊、在Boostrap的模態(tài)框中使用datetimepicker越界問(wèn)題處理
一個(gè)頁(yè)面中髓梅,如果模態(tài)框數(shù)據(jù)較多,整個(gè)模態(tài)框高度幾乎達(dá)到頁(yè)面底部虽缕,而且日期組件作為模態(tài)框底部元素的一部分始藕,則會(huì)出現(xiàn)日期組件超過(guò)頁(yè)面高度部分無(wú)法顯示,此時(shí)需要設(shè)置模態(tài)框的container屬性氮趋,設(shè)置如下:
//初始化日期插件屬性
? ? $('.form_datetime').datetimepicker({
? ? ? ? container:"#ModalID?.modal-content",? //模態(tài)框
? ? ? ? minView : "month", //選擇日期后伍派,不會(huì)再跳轉(zhuǎn)去選擇時(shí)分秒
? ? ? ?format : 'yyyy-mm-dd',//設(shè)置日期格式
? ? ? ? autoclose : true,//選擇后自動(dòng)關(guān)閉日期插件
? ? });
6、bootstrap 報(bào)錯(cuò):Uncaught RangeError: Maximum call stack size
? ? ? ? bootstrap彈窗里面再?gòu)棿笆P玻瑸g覽器console報(bào)錯(cuò):Uncaught RangeError: Maximum call stack size exceeded诉植,導(dǎo)致頁(yè)面上一些奇怪的錯(cuò)誤。?
? ? ? ? 這是bootstrap多層彈窗導(dǎo)致的昵观。解決方案有兩種:
? ? ? ? a晾腔、注釋了bootstrap.min.js的這一句代碼即可。
enforceFocus:function(){??
??var?t=this;??
??e(document).on("focusin.modal",function(e){??
????t.$element[0]!==e.target&&!t.$element.has(e.target).length/*多層彈窗死循環(huán)&&t.$element.focus()*/})??
},??
escape:function(){...}??
? ? ? ? ? ?b啊犬、是在頁(yè)面js 里開(kāi)始加上
$.fn.modal.Constructor.prototype.enforceFocus =function(){};
7灼擂、獲取給定日期后的指定日期
//獲取給定參數(shù)后的新日期字符串
function getNewDate(currDate, addYear, addMonth, addDay){
var date;
? ? if (currDate) {//currDate:2000-01-01
? ? ? ? date=new Date(Date.parse(currDate.replace(/-/g, "/")));
? ? }else {
date =new Date();
? ? }
if (addYear && addYear !=0) {
date.setFullYear(date.getFullYear()+addYear)
//N年前需要對(duì)日期+1或者減1
? ? ? ? date.setDate(date.getDate()+(addYear>0 ? -1 :1));
? ? }
if (addMonth && addMonth !=0) {
date.setMonth(date.getMonth()+addMonth);
? ? ? ? //N月前需要對(duì)日期+1或者減1
? ? ? ? date.setDate(date.getDate()+(addMonth>0 ? -1 :1));
? ? }
if (addDay && addDay !=0) {
date.setDate(date.getDate()+addDay);
? ? }
var year = date.getFullYear();
? ? var month = (date.getMonth() +1) <10 ? ("0" + (date.getMonth() +1)) : (date.getMonth() +1);
? ? var day = date.getDate() <10 ? ("0" + date.getDate()) : date.getDate();
? ? //返回日期格式:2000-01-01
? ? return year+'-'+month+'-'+day;
}
8、查找數(shù)組中是否包含某個(gè)值
a觉至、includes:? ?includes() 方法用來(lái)判斷一個(gè)數(shù)組是否包含一個(gè)指定的值剔应,如果是返回 true,否則false语御。
arr.includes(searchElement)
arr.includes(searchElement, fromIndex)
b峻贮、indexOf:? indexOf() 方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置.indexOf() 方法對(duì)大小寫(xiě)敏感!
stringObject.indexOf(searchvalue,fromindex)?
如果要檢索的字符串值沒(méi)有出現(xiàn)应闯,則該方法返回 -1纤控。
該方法主要用于查找子字符串
9、對(duì)于列表數(shù)據(jù)在非表格中展示碉纺,頁(yè)面的處理方式:
var rec = [{}, {}...]
rec.map(function (item, index) {
if (index >0) {
$("#divlistParent").append($("#divlistParent form:first").clone())
$("#divlistParent form:eq("+index+") table").attr("id", "table"+index); //如果復(fù)制的頁(yè)面組件帶有id船万,則會(huì)克隆出一個(gè)完全一樣的id,造成后面的數(shù)據(jù)無(wú)法處理骨田,故更改克隆后的id值唬涧。
? ? }
$("#divlistParent form:eq("+index+")").find("[tp='det']").each(function (i, ele) {
var obj =$(ele);
? ? ? ? var name = obj.attr('name');
? ? ? ? if (obj[0].tagName =="INPUT") {
obj.val(item[name]);
? ? ? ? }else {
obj.html(item[name]);
? ? ? ? }
});
})
10、設(shè)置radio的選中
對(duì)于經(jīng)常需要用到單選的地方盛撑,回顯數(shù)據(jù)一定要使用prop碎节,使用attr不會(huì)做互斥判斷,直接添加選中抵卫,達(dá)不到單選需求狮荔。如下所示的單選組:
<div id="radioGroup">
? ? <label class="radio-inline">
? ? ? ? <input type="radio" name="sex" value="0" checked>男</label>
? ? <label class="radio-inline">
? ? ? ? <input type="radio" name="sex" value="1"> <span >女</label>
</div>
設(shè)置某個(gè)選項(xiàng)選中操作如下:
$("#radioGroup input:radio[name=sex][value="+1+"]").prop("checked",true); //此時(shí)會(huì)選中第二個(gè)單選項(xiàng)
11、判斷一個(gè)對(duì)象是否為空
方法一:
var data = {};
var b = $.isEmptyObject(data);
alert(b);//true
方法二:
ar data = {};
var arr = Object.getOwnPropertyNames(data);
alert(arr.length == 0);//true
12殖氏、select下拉框不顯示滾動(dòng)條
<select onmousedown="{this.size=this.options.length}" onblur="this.size=0" onchange="this.size=0" style="position:absolute;z-index:1000;"></select>
添加style是為了保證彈出框的位置顯示雅采。不增加style會(huì)導(dǎo)致select顯示在下層被遮擋住
13宝鼓、驗(yàn)證至多帶2位小數(shù)的數(shù)字
var reg =/^[0-9]+(.[0-9]{1,2}){0,1}$/;
if (!reg.test(gets)) {
return false;
}
return true