Browse Source

修复number组件会把空值转化为NAN问题

jqh 4 years ago
parent
commit
9cf0aa57ab

+ 16 - 6
resources/assets/dcat/plugins/number-input/bootstrap-number-input.js

@@ -36,6 +36,16 @@
             var min = self.attr('min');
             var min = self.attr('min');
             var max = self.attr('max');
             var max = self.attr('max');
 
 
+            function getVal() {
+                var val = clone.val();
+
+                if (! val || val === "NaN") {
+                    return 0;
+                }
+
+                return parseInt(val);
+            }
+
             function setText(n) {
             function setText(n) {
                 if ((min && n < min) || (max && n > max)) {
                 if ((min && n < min) || (max && n > max)) {
                     return false;
                     return false;
@@ -47,10 +57,10 @@
 
 
             var group = $("<div class='input-group'></div>");
             var group = $("<div class='input-group'></div>");
             var down = $("<button type='button'>-</button>").attr('class', 'btn btn-' + settings.downClass).click(function () {
             var down = $("<button type='button'>-</button>").attr('class', 'btn btn-' + settings.downClass).click(function () {
-                setText(parseInt(clone.val() || clone.attr('value')) - 1);
+                setText(getVal() - 1);
             });
             });
             var up = $("<button type='button'>+</button>").attr('class', 'btn btn-' + settings.upClass).click(function () {
             var up = $("<button type='button'>+</button>").attr('class', 'btn btn-' + settings.upClass).click(function () {
-                setText(parseInt(clone.val() || clone.attr('value')) + 1);
+                setText(getVal() + 1);
             });
             });
             $("<span class='input-group-btn'></span>").append(down).appendTo(group);
             $("<span class='input-group-btn'></span>").append(down).appendTo(group);
             clone.appendTo(group);
             clone.appendTo(group);
@@ -62,8 +72,8 @@
             // remove spins from original
             // remove spins from original
             clone.prop('type', 'text').keydown(function (e) {
             clone.prop('type', 'text').keydown(function (e) {
                 if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
                 if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
-					(e.keyCode == 65 && e.ctrlKey === true) ||
-					(e.keyCode >= 35 && e.keyCode <= 39)) {
+                    (e.keyCode == 65 && e.ctrlKey === true) ||
+                    (e.keyCode >= 35 && e.keyCode <= 39)) {
                     return;
                     return;
                 }
                 }
                 if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
                 if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
@@ -71,7 +81,7 @@
                 }
                 }
 
 
                 var c = String.fromCharCode(e.which);
                 var c = String.fromCharCode(e.which);
-                var n = parseInt(clone.val() + c);
+                var n = (getVal() + c);
 
 
                 //if ((min && n < min) || (max && n > max)) {
                 //if ((min && n < min) || (max && n > max)) {
                 //    e.preventDefault();
                 //    e.preventDefault();
@@ -80,7 +90,7 @@
 
 
             clone.prop('type', 'text').blur(function (e) {
             clone.prop('type', 'text').blur(function (e) {
                 var c = String.fromCharCode(e.which);
                 var c = String.fromCharCode(e.which);
-                var n = parseInt(clone.val() + c);
+                var n = getVal() + c;
                 if ((min && n < min)) {
                 if ((min && n < min)) {
                     setText(min);
                     setText(min);
                 }
                 }