Javascript 输入编号部分功能只工作一次
我有一个数字输入框的功能,旁边有Javascript 输入编号部分功能只工作一次,javascript,jquery,shopify,Javascript,Jquery,Shopify,我有一个数字输入框的功能,旁边有+和-按钮,可以在我使用的shopify主题中复制代码。但该函数只显示一次。但我需要这些适用于所有产品供应 (function ($) { $.fn.bootstrapNumber = function (options) { var settings = $.extend({ upClass: 'default', downClass: 'default', center: true },
+
和-
按钮,可以在我使用的shopify
主题中复制代码。但该函数只显示一次。但我需要这些适用于所有产品供应
(function ($) {
$.fn.bootstrapNumber = function (options) {
var settings = $.extend({
upClass: 'default',
downClass: 'default',
center: true
}, options);
return this.each(function (e) {
var self = $(this);
var clone = self.clone();
var min = self.attr('min');
var max = self.attr('max');
function setText(n) {
if ((min && n < min) || (max && n > max)) {
return false;
}
clone.focus().val(n);
return true;
}
var group = $("<div class='input-group'></div>");
var down = $("<button type='button'>-</button>").attr('class', 'btn btn-' + settings.downClass).click(function () {
setText(parseInt(clone.val()) - 1);
});
var up = $("<button type='button'>+</button>").attr('class', 'btn btn-' + settings.upClass).click(function () {
setText(parseInt(clone.val()) + 1);
});
$("<span class='input-group-btn'></span>").append(down).appendTo(group);
clone.appendTo(group);
if (clone) {
clone.css('text-align', 'center');
}
$("<span class='input-group-btn'></span>").append(up).appendTo(group);
// remove spins from original
clone.prop('type', 'text').keydown(function (e) {
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
(e.keyCode == 65 && e.ctrlKey === true) ||
(e.keyCode >= 35 && e.keyCode <= 39)) {
return;
}
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault();
}
var c = String.fromCharCode(e.which);
var n = parseInt(clone.val() + c);
//if ((min && n < min) || (max && n > max)) {
// e.preventDefault();
//}
});
clone.prop('type', 'text').blur(function (e) {
var c = String.fromCharCode(e.which);
var n = parseInt(clone.val() + c);
if ((min && n < min)) {
setText(min);
}
else if (max && n > max) {
setText(max);
}
});
self.replaceWith(group);
});
};
}(jQuery));
(函数($){
$.fn.bootstrapNumber=函数(选项){
变量设置=$.extend({
upClass:'default',
downClass:'默认',
中锋:对
},选项);
返回此。每个函数(e){
var self=$(这是);
var clone=self.clone();
var min=self.attr('min');
var max=self.attr('max');
函数setText(n){
如果((最小值和最小值<最小值)|(最大值和最大值>最大值)){
返回false;
}
clone.focus().val(n);
返回true;
}
变量组=$(“”);
var down=$(“-”).attr('class','btn btn-'+settings.down类)。单击(函数(){
setText(parseInt(clone.val())-1);
});
var up=$(“+”).attr('class','btn btn-'+settings.upClass)。单击(函数(){
setText(parseInt(clone.val())+1);
});
$(“”).append(向下).appendTo(组);
克隆.appendTo(组);
如果(克隆){
css('text-align','center');
}
$(“”).append(向上).appendTo(组);
//从原始图像中删除旋转
clone.prop('type','text').keydown(函数(e){
如果($.inArray(例如,keyCode[46,8,9,27,13,110,190])!=-1||
(e.keyCode==65&&e.ctrlKey==true)||
(e.keyCode>=35&&e.keyCode 57))&&(e.keyCode<96|e.keyCode>105)){
e、 预防默认值();
}
var c=String.fromCharCode(e.which);
var n=parseInt(clone.val()+c);
//如果((最小值和最小值<最小值)|(最大值和最大值>最大值)){
//e.预防违约();
//}
});
clone.prop('type','text').blur(函数(e){
var c=String.fromCharCode(e.which);
var n=parseInt(clone.val()+c);
如果((最小值和n<最小值)){
setText(最小值);
}
else if(最大值(&n>max){
setText(最大值);
}
});
自身替代(组);
});
};
}(jQuery));
如何初始化函数
你的问题肯定就在那里。。。
因为它是用这个:$('input').bootstrapNumber();
包括您未修改的脚本。如何初始化函数 你的问题肯定就在那里。。。 因为它是用这个:
$('input').bootstrapNumber();
包含完全未修改的脚本。是否有理由使用
attr
而不是$()
调用向上
和向下
变量?是否有理由使用attr
而不是在$()
调用向上
和向下
变量时设置class属性?我发现了您的初始化。。。在视图源的第729-730行上。您使用id
:#彩色的。使用一个类!id
无论如何都必须是唯一的。。。这在您的页面中并非如此。请使用$(“.input group btn input”).bootstrapNumber({upClass:'success',downcclass:'danger')代码>在第730行。。。删除第729行:$('#after')。bootstrapNumber()代码>¸。如果我添加您指出的行:$('input')。bootstrapNumber();情况变得更糟。$(“[name='checkbox2']”)。更改(函数(){if(!confirm('doyouwancancelme!'){this.checked=true;}})$(“#after”).bootstrapNumber()$bootstrapNumber({upClass:'success',downcclass:'danger});让我再次检查并删除所有id=“after”我发现您的初始化。。。在视图源的第729-730行上。您使用id
:#彩色的。使用一个类!id
无论如何都必须是唯一的。。。这在您的页面中并非如此。请使用$(“.input group btn input”).bootstrapNumber({upClass:'success',downcclass:'danger')代码>在第730行。。。删除第729行:$('#after')。bootstrapNumber()代码>¸。如果我添加您指出的行:$('input')。bootstrapNumber();情况变得更糟。$(“[name='checkbox2']”)。更改(函数(){if(!confirm('doyouwancancelme!'){this.checked=true;}})$(“#after”).bootstrapNumber()$bootstrapNumber({upClass:'success',downcclass:'danger});让我再次检查并删除所有id=“after”