У меня есть этот неупорядоченный список, который содержит некоторые входные данные, что я хочу сделать, это ввести значение на первом входе, например, «1», а затем все остальные входы, по порядку, получит 2, 3, 4, 5

1
Vitor Reis 31 Июл 2010 в 23:44

3 ответа

Лучший ответ

Вы можете сделать что-то вроде этого, проанализировать первое значение, а затем увеличить остальные на основе их индекса:

$("ol input:first").keyup(function() {
  var val = parseInt(this.value, 10);
  $("ol input:gt(0)").val(isNaN(val) ? '' : function(i) { return val + i + 1; });
});​

Вы можете попробовать здесь. Условие if / else проверяет, является ли значение допустимым, например, если вы нажмете клавишу Backspace и она станет пустой, вы не получите NaN при каждом последующем вводе, внутри мы вычеркнем значение, чтобы оно обрабатывалось изящно.

3
Nick Craver 31 Июл 2010 в 20:00

Учитывая следующую разметку, вы можете использовать jQuery для установки значений:

<ul>
    <li><input id="start" type="text" /></li>
    <li><input class="auto" type="text" /></li>
    <li><input class="auto" type="text" /></li>
    <li><input class="auto" type="text" /></li>
    <li><input class="auto" type="text" /></li>
</ul>

И jQuery:

$(document).ready(function() {

    $("#start").change(function() {

        // Get the value entered
        var value = new Number($(this).val());

        // Increment the other fields
        $(".auto").each(function() {
            value++;
            $(this).val(value);
        });

    });

});

См. Рабочий пример здесь. Обратите внимание, что в этом нет никакой проверки, но это даст вам другое представление о том, как добиться того, чего вы хотите.

1
djdd87 31 Июл 2010 в 20:52

Вы можете использовать каждую функцию jQuery. Что-то похожее на следующее:

var counter=Number($("input[selector for your first textbox]").val());
$("input[selector for inputs in your list]").each(function()
{
     this.val(++counter);
}
1
Omkar 31 Июл 2010 в 19:58