PageSourceSearch

https://www.babycenter.si/userfiles/modules/microweber/api/forms.js

js babycenter.si collected 2026-09-28 08:32:54 UTC 9,306 bytes, 294 lines download raw bytes

1
2var getFieldValue = function(a){
3  return typeof a === 'string' ? a : ( typeof a === 'object' && a.tagName !== undefined ? a.value : null);
4};
5
6
7//Cross-browser placeholder
8
9
10mw.Form = function(options) {
11    options = options || {};
12    var defaults = {
13        form: null
14    };
15    this.settings = $.extend({}, defaults, options);
16
17    this.$form = mw.$(this.settings.form).eq(0);
18    this.form = this.$form[0];
19    if (!this.form) {
20        return;
21    }
22
23    this.addBeforePost = function (func, cb) {
24
25    };
26};
27
28
29
30var setValidity = function (state, obj) {
31    var $el = mw.element(obj);
32    if(state){
33        $el.parents('.field').removeClass("error");
34        $el.parent().find('.mw-error').remove();
35    }
36    else{
37        $el.parents('.field').addClass("error");
38
39    }
40};
41
42
43mw.form = {
44  typeNumber:function(el){
45    el.value = el.value.replace(/[^0-9\.,]/g,'');
46  },
47  fixPrice:function(el){
48    el.value = el.value.replace(/,/g,'');
49    var arr = el.value.split('.');
50    var len = arr.length;
51    if(len>1){
52      if(arr[len-1]===''){
53          arr[len-1] = '.00';
54      }
55      else{
56         arr[len-1] = '.' + arr[len-1];
57      }
58      el.value = arr.join('');
59    }
60  },
61  dstatic:function(event, d){
62
63  },
64  post: function(selector, url_to_post, callback, ignorenopost, callback_error, callback_user_cancel, before_send){
65     mw.session.checkPause = true;
66    if(selector.constructor === {}.constructor){
67      return mw.form._post(selector);
68    }
69
70    callback_error = callback_error || false;
71    ignorenopost = ignorenopost || false;
72    var is_form_valid = mw.form.validate.init(selector);
73
74	if(!url_to_post){
75
76		url_to_post = mw.settings.site_url + 'api/post_form';
77
78	}
79
80
81
82    if(is_form_valid){
83
84        var form = mw.$(selector)[0];
85        if (form._isSubmitting) {
86            return;
87        }
88
89        form._isSubmitting = true;
90
91
92        var when = form.$beforepost ? form.$beforepost : function () {};
93        $.when(when()).then(function() {
94            setTimeout(function () {
95                var obj = mw.form.serialize(selector, ignorenopost);
96
97
98                var req = {
99                    url: url_to_post,
100                    data: before_send ? before_send(obj) : obj,
101                    method: 'post',
102                    dataType: "json",
103                    statusCode: {
104                        201: function(data){
105                            // copy of success
106                            mw.session.checkPause = false;
107                            if(typeof callback === 'function'){
108                                callback.call(data, mw.$(selector)[0]);
109                            } else {
110                                return data;
111                            }
112                        }
113                    },
114                    success: function(data){
115/*
116                       if(typeof (data.error) != 'undefined' && data.error){
117                           mw.notification.error(data.error);
118                       }*/
119
120                        mw.session.checkPause = false;
121                        if(typeof callback === 'function'){
122                            callback.call(data, mw.$(selector)[0]);
123                        } else {
124                            return data;
125                        }
126                    },
127
128                    onExternalDataDialogClose: function() {
129                        if(callback_user_cancel) {
130                            callback_user_cancel.call();
131                        }
132                    }
133                }
134
135                if (form.getAttribute('enctype') === "multipart/form-data") {
136
137                    var form_data = new FormData();
138                    $.each(req.data, function (k,v) {
139                        form_data.append(k,v);
140                    });
141
142                    $('[type="file"]', form).each(function () {
143                        if(typeof this.files[0] !== 'undefined') {
144                            form_data.set(this.name, this.files[0]);
145                        }
146                    });
147
148                    req.data = form_data;
149                    req.processData = false;
150                    req.contentType = false;
151                    req.mimeType = 'multipart/form-data';
152                }
153
154                var xhr = $.ajax(req);
155                xhr.always(function(jqXHR, textStatus) {
156                    form._isSubmitting = false;
157                });
158                xhr.fail(function(a,b) {
159                    mw.session.checkPause = false;
160                    if(typeof callback_error === 'function'){
161                        callback_error.call(a,b);
162                    }
163                });
164            }, 78);
165        });
166
167
168
169    }
170	return false;
171  },
172  _post:function(obj){
173    mw.form.post(obj.selector, obj.url, obj.done, obj.ignorenopost, obj.error, obj.error);
174  },
175  validate:{
176    checkbox: function(obj){
177        return obj.checked === true;
178    },
179    field:function(obj){
180		return !!getFieldValue(obj).trim();
181    },
182    email:function(obj){
183        var regexmail = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$/;
184        return regexmail.test(getFieldValue(obj));
185    },
186    url:function(obj){
187	  /* var rurl =/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; */
188       var rurl = /^((https?|ftp):\/\/)?(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/;
189       return rurl.test(getFieldValue(getFieldValue(obj)));
190    },
191    radio:function(objname){
192        var radios = document.getElementsByName(objname), i = 0, len = radios.length;
193        this_radio_valid = false;
194        for( ; i < len ; i++){
195            if(radios[i].checked){
196                this_radio_valid = true;
197                break;
198            }
199        }
200        var parent = mw.$(document.getElementsByName(objname)[0].parentNode);
201        if(this_radio_valid){
202           parent.removeClass("error");
203        }
204        else{
205           parent.addClass("error");
206        }
207        return this_radio_valid;
208    },
209    image_url:function(url, valid, invalid){
210        url = url.replace(/\s/gi,'');
211        if(url.length<6){
212            typeof invalid === 'function'? invalid.call(url) : '';
213            return false;
214        }
215        else{
216          if(!url.contains('http')){url = 'http://'+url}
217          if(!window.ImgTester){
218              window.ImgTester = new Image();
219              document.body.appendChild(window.ImgTester);
220              window.ImgTester.className = 'semi_hidden';
221              window.ImgTester.onload = function(){
222                typeof valid === 'function'? valid.call(url) : '';
223              }
224              window.ImgTester.onerror = function(){
225                typeof invalid === 'function'? invalid.call(url) : '';
226              }
227          }
228          window.ImgTester.src = url;
229        }
230    },
231    proceed:{
232      checkbox:function(obj){
233          setValidity(mw.form.validate.checkbox(obj), obj)
234      },
235      field:function(obj){
236          setValidity(mw.form.validate.field(obj), obj)
237
238      },
239      email:function(obj){
240          setValidity(mw.form.validate.email(obj), obj)
241      }
242    },
243    checkFields:function(form){
244        mw.$(form).find(".required,[required]").each(function(){
245          var type = mw.$(this).attr("type");
246          if(type==='checkbox'){
247             mw.form.validate.proceed.checkbox(this);
248          }
249          else if(type==='radio'){
250             mw.form.validate.radio(this.name);
251          }
252          else{
253             mw.form.validate.proceed.field(this);
254          }
255        });
256        mw.$(form).find(".required-email").each(function(){
257            mw.form.validate.proceed.email(this);
258        });
259    },
260    init:function(obj){
261        mw.form.validate.checkFields(obj);
262        if($(obj).find(".error").length>0){
263            mw.$(obj).addClass("error submited");
264            return false;
265        }
266        else{
267           mw.$(obj).removeClass("error");
268            return true;
269        }
270    }
271  },
272  serialize : function(id, ignorenopost){
273    var ignorenopost = ignorenopost || false;
274    return mw.serializeFields(id, ignorenopost);
275  }
276}
277
278
279mw.postForm = function(o){
280  return mw.form._post(o);
281}
282
283
284
285
286
287
288
289
290
291
292
293
294

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.