Выход из цикла Javascript

1

Я видел подобные проблемы на этом сайте, но я не могу заставить это работать. Я пытаюсь обнаружить повторяющиеся записи в ящиках ввода через Javascript, но я хочу, чтобы цикл прерывался при вводе дубликата. У меня есть эта часть работы, но цикл продолжает работать, и он создает бесконечный цикл, который пользователь не может получить. Я пытаюсь разбить цикл, и пользователь повторно вводит другое значение.

function checkDuplicates() {
        var numFlds = <cfoutput>#form.UnitCount#</cfoutput>;
            for (var x=1; x<=numFlds; x++) {
                for (var y=x+1; y<=numFlds; y++) {
                    if (document.getElementById('SN'+y).value !== '') 
                        if (document.getElementById('SN'+x).value == document.getElementById('SN'+y).value) {
                            alert('Duplicate Serial Number Entered!');
                                break;
                            }
                        }
                    }
                }
Показать ещё 3 комментария
Теги:

2 ответа

1

вы можете объявить duplicate found bool и выполнить проверку для каждого цикла для него. объявите duplicate = true если он найден.

for(x=0; x < Num && duplicate; x++)

и когда вы его найдете, остановка цикла, следующая остановка тоже, а следующая тоже. и вы ушли.

если вы хотите запомнить, где вы остановились, вы можете сохранить соответствующий x, чтобы сохранить место, где вы остановились.

LG!

0

Существует способ выпрыгнуть на ссылку с меткой. В следующем примере у вас есть три метки (label1, label2, label3). Если вы используете "break label3" автоматически, ваш код перейдет в конец (или на желаемый ярлык)

var numFlds = <cfoutput>#form.UnitCount#</cfoutput>;
label1:
for (var x=1; x<=numFlds; x++) {
    label2:
    for (var y=x+1; y<=numFlds; y++) {
        if (document.getElementById('SN'+y).value !== '') {
            if (document.getElementById('SN'+x).value == document.getElementById('SN'+y).value) {
                alert('Duplicate Serial Number Entered!');
                break label3;
            }
        }
    }
}
label3:
console.log('Finish!');
  • 0
    По какой причине этот код больше не обнаруживает повторяющиеся значения полей?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню