PageSourceSearch

https://larachecity.com/public/naples/js/jquery.form.js

js larachecity.com collected 2026-10-03 02:35:55 UTC 27,161 bytes, 579 lines download raw bytes

1$(function () {
2    $(".g-form-components").click(function () {
3        var _this = $(this);
4        if (!!_this.data("do") && _this.data("do") === '1') {
5            return '';
6        } else {
7            _this.data("do", "1");
8        }
9        var formComData = $.formComData(_this);
10        if (formComData === false) {
11            _this.data("do", "0");
12            return '';
13        }
14        var formData = formComData.data;
15        var formCom = formComData.com;
16
17        // 是否存在文件
18        var isUpload = false;
19        for (var i in formCom) {
20            if (formCom[i].comthis.attr("type") === 'file') {
21                isUpload = true
22            }
23        }
24        // ajax 上传文件提交数据
25        if (isUpload) {
26            var fileFormData = new FormData();
27            fileFormData.append("boxId", formData.boxId);
28            fileFormData.append("captcha", formData.captcha);
29            fileFormData.append("pageId", formData.pageId);
30            fileFormData.append("postUrl", formData.postUrl);
31            var formItems = [];
32            for (var i in formData.formItem) {
33                var formItem = formData.formItem[i];
34                for (var j in formCom) {
35                    if (parseInt(formItem.id) === parseInt(formCom[j].id)) {
36                        if (formCom[j].comthis.attr("type") === 'file') {
37                            formItem.isFile = 1;
38                            fileFormData.append("file" + formItem.id, formCom[j].comthis[0].files[0]);
39                        } else {
40                            formItem.isFile = 0;
41                        }
42                    }
43                }
44                formItems[i] = formItem;
45            }
46            fileFormData.append("formItem", JSON.stringify(formItems));
47
48            $.ajax({
49                url: formData.postUrl,
50                type: 'POST',
51                data: fileFormData,
52                cache: false,
53                processData: false,
54                contentType: false,
55                dataType: "json",
56                success: function (_ret) {
57                    _this.data("do", "0");
58                    var componentsParentId = _this.data("comtag");
59                    $("#" + componentsParentId).find("img[name='captcha']").click();
60                    if (_ret._return !== "success") {
61                        if (_ret.code == '2') {
62                            layer.alert($.languagePack(_ret.language), function (index) {
63                                window.location.reload();
64                                layer.close(index);
65                            });
66                            $(".layui-layer-close").click(function () {
67                                window.location.reload();
68                            });
69                            return '';
70                        }
71                        if (!!_ret.message) {
72                            layer.alert(_ret.message, function (index) {
73                                if (_ret.code == '1') {
74                                    var componentsParentId = _this.data("comtag");
75                                    $("#" + componentsParentId).find("input[name='captcha']").focus();
76                                }
77                                layer.close(index);
78                            });
79                            $(".layui-layer-close").click(function () {
80                                if (_ret.code == '1') {
81                                    var componentsParentId = _this.data("comtag");
82                                    $("#" + componentsParentId).find("input[name='captcha']").focus();
83                                }
84                            });
85                        }
86                        return false;
87                    } else {
88                        // 成功
89                        if (!!_ret.message) {
90                            layer.alert(_ret.message, function (index) {
91                                window.location.reload();
92                                layer.close(index);
93                            });
94                            $(".layui-layer-close").click(function () {
95                                window.location.reload();
96                            });
97                        }
98
99                    }
100                }
101            });
102            return;
103        }
104
105        // ajax 提交数据
106        $.ajax({
107            type: "POST",
108            url: formData.postUrl,
109            data: formData,
110            dataType: "json",
111            success: function (_ret) {
112                _this.data("do", "0");
113                var componentsParentId = _this.data("comtag");
114                $("#" + componentsParentId).find("img[name='captcha']").click();
115                if (_ret._return !== "success") {
116                    if (_ret.code == '2') {
117                        layer.alert($.languagePack(_ret.language), function (index) {
118                            window.location.reload();
119                            layer.close(index);
120                        });
121                        $(".layui-layer-close").click(function () {
122                            window.location.reload();
123                        });
124                        return '';
125                    }
126                    if (!!_ret.message) {
127                        layer.alert(_ret.message, function (index) {
128                            if (_ret.code == '1') {
129                                var componentsParentId = _this.data("comtag");
130                                $("#" + componentsParentId).find("input[name='captcha']").focus();
131                            }
132                            layer.close(index);
133                        });
134                        $(".layui-layer-close").click(function () {
135                            if (_ret.code == '1') {
136                                var componentsParentId = _this.data("comtag");
137                                $("#" + componentsParentId).find("input[name='captcha']").focus();
138                            }
139                        });
140                    }
141                    return false;
142                } else {
143                    // 成功
144                    if (!!_ret.message) {
145                        layer.alert(_ret.message, function (index) {
146                            window.location.reload();
147                            layer.close(index);
148                        });
149                        $(".layui-layer-close").click(function () {
150                            window.location.reload();
151                        });
152                    }
153
154                }
155            },
156            error: function () {
157                return  ajaxError();
158            }
159        });
160    });
161});
162(function ($) {
163    $.extend({
164        // 公开插件入口
165        "formComData": function (options) {
166            // 内部定义一个插件获取相应的数据
167            if (typeof this.privateFunction === "undefined") {
168                this.privateFunction = $.extend({
169                    "formGetFormComponents": function (_this) {
170                        var componentsParentId = _this.data("comtag");
171                        var _componentsParent = $("#" + componentsParentId);
172                        if (_componentsParent.length < 1) {
173                            return false;
174                        }
175                        return _componentsParent;
176                    },
177                    "formGetParmes": function (_componentsParent) {
178                        if (_componentsParent.find("input[name='box-id']:hidden").length > 0) {
179                            var boxId = _componentsParent.find("input[name='box-id']:hidden").val();
180                        }
181                        if (_componentsParent.find("input[name='post-url']:hidden").length > 0) {
182                            var postUrl = _componentsParent.find("input[name='post-url']:hidden").val();
183                        }
184                        if (_componentsParent.find("input[name='component-type']:hidden").length > 0) {
185                            var compType = _componentsParent.find("input[name='component-type']:hidden").val();
186                        }
187                        if (_componentsParent.find("input[name='page-id']:hidden").length > 0) {
188                            var pageId = _componentsParent.find("input[name='page-id']:hidden").val();
189                        }
190                        if (typeof boxId === 'undefined' || typeof postUrl === 'undefined' || typeof compType === 'undefined' || typeof pageId === 'undefined') {
191                            console.error('Undefined boxId OR postUrl');
192                            return false;
193                        }
194                        return {boxId: boxId, postUrl: postUrl, compType: compType, pageId: pageId};
195                    },
196                    "formGetFormData": function (_form, boxId) {
197                        var result = {};
198                        var i = 0;
199                        _form.find("input").each(function (key) {
200                            var _this = $(this);
201                            if (_this.data("boxid") == boxId && typeof _this.data("variable") !== "undefined") {
202                                var val = _this.val();
203                                if (_this.data('distpicker') && parseInt(_this.data('distpicker')) === 1) {
204                                    var province = _this.next('div').find(".province option:selected").text();
205                                    var city = _this.next('div').find(".city option:selected").text();
206                                    var district = _this.next('div').find(".district option:selected").text();
207                                    if (province && city && district) {
208                                        val = province + city + district
209                                    }
210                                }
211                                var _data = eval(_this.data("variable"));
212                                _data.comthis = _this;
213                                _data.value = val;
214                                result[i] = _data;
215                                i++;
216                            }
217                        });
218                        return result;
219                    },
220                    "formGetGivenData": function (_form, boxId) {
221                        var result = {};
222                        var i = 0;
223                        _form.find("input").each(function (key) {
224                            var _this = $(this);
225                            if (_this.data("boxid") == boxId && typeof _this.data("rule") !== "undefined") {
226                                var _data = {
227                                    comthis: _this,
228                                    comid: _this.data("comid"),
229                                    boxid: _this.data("boxid"),
230                                    rule: _this.data("rule"),
231                                    message: _this.data("message")
232                                };
233//                                console.log(_data);
234                                result[i] = _data;
235                                i++;
236                            }
237                        });
238                        return result;
239                    },
240                    "formGetCaptcha": function (_form) {
241                        if ($.trim(_form.find("input[name='captcha']")).length > 0) {
242                            return $.trim(_form.find("input[name='captcha']").val());
243                        }
244                        return '';
245                    }
246                });
247            }
248            var _this = $.extend({errorInfos: {}}, options);
249
250            // 获取表单组件节点
251            var _componentsParent = this.privateFunction.formGetFormComponents(_this);
252            if (_componentsParent === false) {
253                return false;
254            }
255            // 获取 boxId、compType 以及 postUrl 登录数据
256            var formParmes = this.privateFunction.formGetParmes(_componentsParent);
257            if (this.formParmes === false) {
258                return false;
259            }
260            // 获取表单组件中的表单数据
261            var formData = this.privateFunction.formGetFormData(_componentsParent, formParmes.boxId);
262            if (formData.length < 1) {
263                return false;
264            }
265            // 验证表单规则定义
266//            if (typeof this.formValidation === "undefined") {
267            this.formValidation = $.extend({
268                // 错误提示
269                "messageBox": function (message, obj, width) {
270                    _this.errorInfos[obj.data('comid')] = {
271                        message: message,
272                        obj: obj,
273                        width: width
274                    };
275//                        console.log();
276//                        layer.alert(message, function (index) {
277//                            obj.focus();
278//                            layer.close(index);
279//                        });
280//                        obj.focus();
281//                        $(".layui-layer-close").click(function () {
282//                            obj.focus();
283//                        });
284                },
285                // 不能为空
286                "required": function (_data, ruleData) {
287                    if (typeof _data.value === "undefined" || $.trim(_data.value) === "" || strlen(_data.value) === 0) {
288                        this.messageBox(ruleData.message, _data.comthis);
289                        return false;
290                    }
291                    return true;
292                },
293                "rlength": function (_data, ruleData) {
294                    if (typeof ruleData.is !== "undefined") {
295                        if (strlen(_data.value) != parseInt(ruleData.is)) {
296                            this.messageBox(ruleData.message, _data.comthis);
297                            return false;
298                        }
299                        return true;
300                    } else {
301                        if (typeof ruleData.min !== "undefined") {
302                            if (strlen(_data.value) < parseInt(ruleData.min)) {
303                                this.messageBox(ruleData.message, _data.comthis);
304                                return false;
305                            }
306                        }
307                        if (typeof ruleData.max !== "undefined") {
308                            if (strlen(_data.value) >
308 parseInt(ruleData.max)) {
309                                this.messageBox(ruleData.message, _data.comthis);
310                                return false;
311                            }
312                        }
313                        return true;
314                    }
315                },
316                "email": function (_data, ruleData) {
317                    if (_data.value == "") {
318                        return true;
319                    }
320                    var pb = /^[a-zA-Z0-9!#$%&\'*+\\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&\'*+\\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/.test(_data.value);
321                    if (!pb) {
322                        this.messageBox(ruleData.message, _data.comthis);
323                        return false;
324                    }
325                    return true;
326                },
327                "phone": function (_data, ruleData) {
328                    if (_data.value == "") {
329                        return true;
330                    }
331                    var pb = /^[0-9\-\+\,\;\,\;]+$/.test(_data.value);
332                    if (!pb) {
333                        this.messageBox(ruleData.message, _data.comthis);
334                        return false;
335                    }
336                    return true;
337                },
338                "rili": function (_data, ruleData) {
339                    if (_data.value == "") {
340                        return true;
341                    }
342                    var utime = new Date(_data.value).getTime();
343                    if (utime < 1) {
344                        this.messageBox(ruleData.message, _data.comthis);
345                        return false;
346                    }
347                    return true;
348                },
349                "suffix": function (_data, ruleData) {
350                    var suf = _data.value.substr(_data.value.lastIndexOf('.') + 1);
351                    var bool = false;
352                    for (var i in ruleData.suffix) {
353                        var suff = ruleData.suffix[i];
354                        if (suff === suf) {
355                            bool = true;
356                        }
357                    }
358                    if (bool) {
359                        return true;
360                    }
361                    this.messageBox(ruleData.message, _data.comthis, '350px');
362                    return false;
363                },
364                "size": function (_data, ruleData) {
365                    if (_data.comthis.next("input[name='fileSize']").val() && _data.comthis.next("input[name='fileSize']").val() > ruleData.size) {
366                        this.messageBox(ruleData.message, _data.comthis);
367                        return false;
368                    }
369                    return true;
370                }
371            });
372//            }
373
374            /**
375             * 对于特定的表单验证的过程
376             */
377            // 验证特殊表单规则
378//            if (typeof this.givenValidation === "undefined") {
379            this.givenValidation = $.extend({
380                // 首先需要关联到表单以及表单结果的数据上
381                "controller": function (givenData, formData) {
382                    var bool = true;
383                    var gvalue = null;
384                    for (var i in givenData) {
385                        givenData[i].comid
386                        for (var k in formData) {
387                            if (formData[k].id == givenData[i].comid) {
388                                gvalue = formData[k].value;
389                                break;
390                            }
391                        }
392                        if (givenData[i].rule === 'required' && (gvalue === null || gvalue === "")) {
393//                                layer.alert(givenData[i].message, function (index) {
394//                                    layer.close(index);
395//                                });
396                            _this.errorInfos[givenData[i].comid] = {
397                                message: givenData[i].message,
398                                obj: givenData[i].comthis
399                            };
400                            bool = false;
401                        }
402                        gvalue = null;
403                    }
404                    return bool;
405                }
406            });
407//            }
408            var givenData = this.privateFunction.formGetGivenData(_componentsParent, formParmes.boxI
408d);
409
410            // 对表单数据验证的过程
411            var bool = true;
412            var formItem = new Array;
413            var formComthis = new Array;
414            $.each(formData, function (key, _data) {
415                if ($.formComDataValidation(_data) === true) {
416                    formItem[key] = {
417                        id: _data.id,
418                        name: _data.name,
419                        value: _data.value,
420                        item: typeof _data.item !== "undefined" ? _data.item : 0
421                    };
422                    formComthis[key] = {
423                        id: _data.id,
424                        comthis: _data.comthis
425                    }
426                } else {
427                    bool = false;
428                }
429            });
430            if (this.givenValidation.controller(givenData, formData) === false) {
431                bool = false;
432            }
433            if (bool === true) {
434                // 验证验证码是否为空
435                var captcha = this.privateFunction.formGetCaptcha(_componentsParent);
436                if (captcha === "") {
437                    layer.alert(languagePack('verificationCodeCannotBeEmpty'), function (index) {
438                        if (_componentsParent.find("input[name='captcha']").length > 0) {
439                            _componentsParent.find("input[name='captcha']").focus();
440                        }
441                        layer.close(index);
442                    });
443                    $(".layui-layer-close").click(function () {
444                        _componentsParent.find("input[name='captcha']").focus();
445                    });
446                    return false;
447                } else if (captcha.length != 4) {
448                    layer.alert(languagePack('pleaseEnter4VerificationCode'), function (index) {
449                        if (_componentsParent.find("input[name='captcha']").length > 0) {
450                            _componentsParent.find("input[name='captcha']").focus();
451                        }
452                        layer.close(index);
453                    });
454                    $(".layui-layer-close").click(function () {
455                        _componentsParent.find("input[name='captcha']").focus();
456                    });
457                    return false;
458                }
459                var returnData = {
460                    formItem: formItem,
461                    captcha: captcha,
462                    boxId: formParmes.boxId,
463                    pageId: formParmes.pageId,
464                    postUrl: formParmes.postUrl
465                };
466                return {com: formComthis, data: returnData};
467            } else {
468//                _componentsParent, formParmes.boxId
469//                _componentsParent.find("input[data-boxid='"+formParmes.boxId+"']").each(function (key) {
470//                            var _this = $(this);
471//                            if (_this.data("boxid") == boxId && typeof _this.data("variable") !== "undefined") {
472//                                var _data = eval(_this.data("variable"));
473//                                _data.comthis = _this;
474//                                _data.value = _this.val();
475//                                result[i] = _data;
476//                                i++;
477//                            }
478//                        });
479                // 从上到下获取表单
480                _componentsParent.find("input[data-boxid='" + formParmes.boxId + "']").each(function () {
481                    if (!!_this.errorInfos[$(this).data("comid")]) {
482                        var _info = _this.errorInfos[$(this).data("comid")];
483                        if (!!_info.obj.data("variable")) {
484                            if (!!_info.width) {
485                                var _layer = layer;
486                                _layer.alert(_info.message, {
487                                    area: _info.width,
488                                    success: function (index) {
489                                        _info.obj.focus();
490                                    }
491                                });
492                            } else {
493                                layer.alert(_info.message, function (index) {
494                                    _info.obj.focus();
495                                    layer.close(index);
496                                });
497                            }
498                            _info.obj.focus();
499                            $(".layui-layer-close").click(function () {
500                                obj.focus();
501                            });
502                        } else {
503                            layer.alert(_info.message, function (index) {
504                                layer.close(index);
505                            });
506                            $(".layui-layer-close").click(function () {
507                                obj.focus();
508                            });
509                        }
510                        return false;
511                    }
512                });
513            }
514            return false;
515        },
516        // 公开插件的验证入口,日后方便进行单个表单验证
517        "formComDataValidation": function (_data) {
518            var bool = true;
519            var formValidation = this.formValidation;
520            if (typeof _data.rules === "string" && _data.rules === "") {
521                return bool;
522            }
523            $.each(_data.rules, function (rule, ruleData) {
524                if (bool === false) {
525                    return '';
526                }
527                switch (rule) {
528                    case "required":
529                        if (formValidation.required(_data, ruleData) === false) {
530                            bool = false;
531                        }
532                        break;
533                    case "length":
534                        if (formValidation.rlength(_data, ruleData) === false) {
535                            bool = false;
536                        }
537                        break;
538                    case "email":
539                        if (formValidation.email(_data, ruleData) === false) {
540                            bool = false;
541                        }
542                        break;
543                    case "phone":
544                        if (formValidation.phone(_data, ruleData) === false) {
545                            bool = false;
546                        }
547                        break;
548                    case "rili":
549                        if (formValidation.rili(_data, ruleData) === false) {
550                            bool = false;
551                        }
552                        break;
553                    case "suffix":
554                        if (formValidation.suffix(_data, ruleData) === false) {
555                            bool = false;
556                        }
557                        break;
558                    case "size":
559                        if (formValidation.size(_data, ruleData) === false) {
560                            bool = false;
561                        }
562                        break;
563                    case "default":
564                        if (ruleData === "NULL") {
565                            bool = true;
566                        }
567                        break;
568                    default :
569                        bool = false;
570                        console.error("Undefined rule : " + rule);
571                        return '';
572                }
573
574            });
575            return bool;
576        }
577    });
578})(jQuery);
579

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.