-1

スピナーを使用してフィールドに記号 (+) を追加しようとしていますが、毎回記号なしの数字が返されます。どうにかしてこの問題を解決できますか?

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/

4

2 に答える 2

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);
    }

});
于 2013-04-12T15:20:08.283 に答える
1

indexOf はインデックスを返すか、見つからない場合は -1 を返します。0 ではなく -1 で比較する必要があります

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

今では、変更とスピンの両方で醜いジャンプなしで更新され、負の数でも機能します。もちろん、これを行うと、Globalize 数値書式を使用できないことを意味します。

于 2013-04-12T15:12:15.650 に答える