1

我正在使用 jQuery 微调器将 +/- 值添加到我在 mysql 数据库传播的表中的输入字段中。

我想将列顶部的 +/- 集成到该列中的每个输入以及每个输入都有自己的按钮的 +/- 1。

我为 jQuery 尝试了以下方法:

<script type="text/javascript" src="js/ui.spinner.js"></script>
<script type="text/javascript">
    jQuery().ready(function($) {
        $('.spinner').spinner({ min: 0, max: 100 });
        $('#spinnerall').spinner().change(function() {$('.spinner').spinner('option', 'max', parseInt($(this).val()));});
        $('#spinnerall').spinner().change(function() {$('.spinner').spinner('option', 'min', parseInt($(this).val()));});
    });
</script>

然后是表格代码:

<td><input type='text' class='spinner' value='$max' /></td>
<input type='text' id='spinnerall' />

“spinnerall”实际上并不需要作为输入,但无论如何我都无法弄清楚如何调用它。

带有我上面使用的代码的 spinnerall 输入将所有输入重置为等于其当前打开的相同值,而不仅仅是加或减 1。

4

1 回答 1

2

如果我能理解问题,答案应该是这样的:

<script type="text/javascript" src="js/ui.spinner.js"></script>
<script type="text/javascript">
$(function(){
    var $sa = $('#spinnerall').spinner().change(function() {
        var $me = $(this);
        // we need the offset between the start and current position
        var offset = parseInt($me.attr('data-init')) - parseInt($me.val());
        $ss.each(function(){
            // applying the offset to all spinners
            this.value = parseInt($(this).attr('data-init')) - offset;
            // allow only positive or zero
            this.value *= (this.value > 0);
        })
    });
    $sa.attr('data-init',$sa.val());

    var $ss = $('.spinner').spinner({ min: 0, max: 100 }).change(function(){
        var $me = $(this);
        // replacing the initial value with the current (without the offset)
        $me.attr('data-init',parseInt($me.val()) - parseInt($sa.attr('data-init')) - parseInt($sa.val()));
    }).change();
});
</script>

我已经用这个标记测试了它:

<input type="text" class="spinner" value="1" /><br/>
<input type="text" class="spinner" value="-5" /><br/>
<input type="text" class="spinner" value="7" /><br/><br/>
<input type='text' id='spinnerall' value="0" />

这是jsfiddle.net中的一个示例

于 2012-05-11T18:12:14.543 回答