Итерация между входами инкрементного идентификатора с использованием jQuery - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть некоторые входные данные в моем HTML, которые имеют идентификаторы, такие как element1, element2, element3, ... elementN

Если я хочу использовать селектор для каждого элемента,Я не хочу делать по одному для каждого элемента, как это: $("#element1") есть ли способ использовать цикл for для итерации между element1 и elementN с использованием jQuery?

РЕДАКТИРОВАТЬ: мне нужно выполнить проверки с другим инкрементным идентификатором, как это

var X1 = $("#element1").val();
var X2 = $("#anotherElement1").val();
if (X1 == X2)
{ 
//do something
}

Edit2 (добавленный контекст)

<input data-val="true" data-val-number="The field Element1 must be a 
number." id="Element1 " max="1000" min="0" name="EnergyAt1" step="0,1" type="text" value="18,3" 
data-role="numerictextbox" role="spinbutton" aria-valuemin="0" 
aria-valuemax="1000" 
class="k-input" aria-valuenow="18,3" aria-disabled="false" style="display: none;">

<input data-val="true" data-val-number="The field AnotherElement1 must be a 
number." id="AnotherElement1 " max="1000" min="0" name="EnergyAt1" step="0,1" 
type="text" value="18,3" data-role="numerictextbox" role="spinbutton" aria- 
valuemin="0" aria-valuemax="1000" class="k-input" aria-valuenow="18,3" aria- 
disabled="false" style="display: none;">

Что мне нужно сделать, это функцияпривязан к моей кнопке отправки, которая проверяет, для каждого элемента от 1 до N, что if (ElementX.val ()! = 0 && AnotherElementX == 0) запрещает отправку формы.

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

По нескольким причинам я не мог использовать классы в соответствии с рекомендациями, в итоге я с помощью коллеги построил цикл for вокруг своего сценария использования, вот код:

function checkIfAnotherElementIsZero(e) {
        var canSubmit = true;
        for (let i = 1; i <= 24; i++)
        {
            if ($("#Element" + i).val() != 0 && $("#AnotherElement" + i).val() == 0) 
            {
                alert('Error');
                canSubmit = false;
                break;
                e.preventDefault();
            }
        }
        if (canSubmit == true)
        {
             $( "input[name=Date]" ).addClass( "data-val-ignore" );
             $( "#@ContextControllerName" ).submit();
        }
        else
        {
            e.preventDefault();
        }
    }
0 голосов
/ 21 сентября 2018

Предполагая, что каждый идентификатор, начинающийся с element, - это то, что вы хотите выбрать, вы можете использовать строку выбора [id^="element"], которая выберет все, чей id начинается с element:

$('[id^="element"]').each(function() {
  console.log($(this).text());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="element1">e1</div>
<div id="element2">e2</div>
<div id="element3">e3</div>
<div id="element4">e4</div>

Но если это вообще возможно, используйте вместо этого классы - id s не очень уместны в такой ситуации:

$('.element').each(function() {
  console.log($(this).text());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="element">e1</div>
<div class="element">e2</div>
<div class="element">e3</div>
<div class="element">e4</div>
...