Это продолжение моего предыдущего вопроса .
Я хотел сравнить результаты, которые я получаю при заполнении формы.
Вот что у меня есть:
const eqObj = (obj, source) =>
Object.keys(source).every(key => obj.hasOwnProperty(key) && obj[key] === source[key]);
$('#btn').on('click', function() {
let $inputs = $('#new_form :input');
let new_vals = {};
$inputs.each(function() {
new_form[this.id] = $(this).val();
});
console.log(new_vals);
$.getJSON(api, function(data) {
data.forEach(d => {
console.log(d.values);
if (eqObj(new_vals, d.values){//open first models and append matched values}
else {//open other modal}
});
});
});
My console.log () для new_vals
: {start_date: "2019-12-25", end_date: "2020-04-15"}
my console.log () для d.values
:
{start_date: "2020-01-01", end_date: "2020-03-15"}
{start_date: "2020-01-01", end_date: "2020-03-15"}
{start_date: "2019-12-25", end_date: "2020-04-15"}
{start_date: "2020-03-20", end_date: "2020-03-31"}
{start_date: "2019-10-01", end_date: "2020-03-31"}
{start_date: "2019-10-01", end_date: "2020-03-31"}
{start_date: "2020-01-01", end_date: "2020-01-31"}
{start_date: "2020-01-19", end_date: "2020-01-25"}
Когда я ввожу несогласованные значения, я могу открыть второй модальный файл как Я хочу, но когда я ввожу соответствующее значение в свою форму, открывается оба модальных окна.
Почему в моем операторе if открываются оба модальных окна? Есть ли способ просто выполнить $ .get JSON () в моем операторе if? Мне это не нужно? Мне нужен только $ .get Json (), если есть совпадения, если нет, мне нужно открыть другой модальный.