jquery или js Найти все inputы со значением больше чем в изменяемом поле

Статус
В этой теме нельзя размещать новые ответы.

notzevs

Создатель
Регистрация
27 Сен 2009
Сообщения
30
Реакции
5
Задача найти Все inputы где value больше чем в том inputе который изменился. После этого добавить ко всем кроме измененного 1.
Делаю нумерацию позиций фоток. Хотелось бы чтобы при изменении у одной фотки позиции, номера автоматически изменялись у других.
Желательно подсказать на jquery.
Вот приблизительный код
HTML:
var pos=this.value;
$('input:text[value>pos]').val('val()+1');
в нем не учитывается что к измененному inputу прибавлять не нужно и я не в курсе как правильно указать value > какой-то переменной. Знаю как это реализовать на простом js, но сейчас изучаю jquery и хотелось бы узнать реально ли это сделать на jquery.
 
может так
HTML:
        $("input:text").change(function(){
            val = $(this).val();
            $("input:text").each(function (i) {
                input_val = parseInt($(this).val());
                if(input_val>val)$(this).val(input_val+1);
            });
        });
или использовать визуальное сортирование
 
Спасибо. Все работает.
Вот только я понял, что надо реализовать это через другую логику. В данном случае если есть фото с позициями: 1,2,3,4. То если изменить поз. №1 на 2, а потом еще раз на два, ко всем поз. больше 2 добавиться два раза +1. И может получиться две поз. с номером 2.
И куча пропущенной номерации. и если пользователь поменяет туда-сюда пять раз, то разрыв между числами будет значителен.
Думаю надо после изменения искать эллемент у которого такое же значение но к примеру другое имя или id и добавлять +1, а потом искать уже к тому эллементу пару с одинаковым значением и тоже +1.Так не будет одинаковых значений и пробелов.
Есть предложения как это сделать, кроме визуализации?
 
может сразу взять разницу изменения числа и прибавить ко всем номерам которые больше.

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
        
        var input=new Array(); 
        
        create();
        //заполняет массив полей
        function create(){
            $("input:text").each(function(i){
                input[$(this).attr("name")]=parseInt($(this).val());
            });
        }
        //если значение изменилось тогда берём разницу и прибавляем к другим
        $("input:text").change(function(){
            val_old=input[$(this).attr("name")];
            val_max=parseInt($(this).val())+1;
            name=$(this).attr("name")
            diff=parseInt($(this).val())-input[name];
            
            //заполняет пустые поля если надо
            $("input:text").each(function(i){
                if($(this).val()==""){
                    $(this).val(val_max);
                    val_max+=1;
                }
            });
            
            
            if(diff>0){
                $("input:text").each(function(i){
                    if($(this).val()>val_old && $(this).attr("name")!=name){
                        $(this).val(parseInt($(this).val())+diff);
                    }
                });
            }
            create();
        });
    });
    </script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>

<form action="" method="get">
    <input name="test1" type="text"><br>
    <input name="test2" type="text"><br>
    <input name="test3" type="text"><br>
    <input name="test4" type="text"><br>
    <input name="test5" type="text"><br>
    <input name="" type="submit">
</form>

</body>
</html>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху