在微调器中添加加号(Jquery)

时间:2013-04-12 15:07:50

标签: jquery jquery-ui jquery-plugins spinner

我正在尝试使用微调器在我的字段中添加一个符号(+),但每次没有符号时返回该符号,我能以某种方式解决这个问题吗?

var spinner = $( "#spinner" ).spinner({
    step: 0.25,
    min:-12, 
    max:8, 
    change: function( event, ui ) {
        var ph = $('#spinner').val();
        if(ph.indexOf('+') == 0) {
          alert($('#spinner').val());
          $('#spinner').val('+'+$('#spinner').val());
       } else {

       }
    },
    spin: function( event, ui ) {

    }

});

或者你可以在这里查看:http://jsfiddle.net/XseWc/220/

2 个答案:

答案 0 :(得分:1)

indexOf返回索引,如果未找到,则返回-1。您需要与-1而不是0

进行比较
if(ph.indexOf('+') == -1)

jsFiddle Demo

但是,我建议采用完全不同的方式。相反,覆盖_format方法。

$.ui.spinner.prototype._format = function(value){
    if (value > 0) {
        return "+" + value;
    } else {
        return value;
    }
}

var spinner = $( "#spinner" ).spinner({
    step: 0.25,
    min:-12, 
    max:8
});

jsFiddle Demo

现在它在变化和旋转方面都得到了更新,没有丑陋的跳跃,它也适用于负数。这样做当然意味着您无法使用全球化数字格式。

答案 1 :(得分:1)

这也适用于旋转:JSFIDDLE

var spinner = $("#spinner").spinner({
    step: 0.25,
    min: -12,
    max: 8,
    change: function (event, ui) {        
    },
    spin: function (event, ui) {
        var keepPlus =  spinner.val().indexOf('+') === 0?true:false;
        setTimeout(function () {
            var ph = spinner.val(); 
            if (ph > 0 && keepPlus)spinner.val('+' + spinner.val());
        }, 0);
    }

});