Получить значение из нескольких входных данных и поиска совпадения массива (с AND и OR) - PullRequest
0 голосов
/ 19 мая 2018

В функции onclilck я должен получить значение из каждого входа и выполнить поиск по этому значению, найти совпадение в моем массиве, а затем сообщить в DIV «результат».Проблема в том, что я должен сделать это с помощью логического поиска И, поэтому, используя ВСЕ значения вместе, если они присутствуют.Я не могу сделать это, кто-то может мне помочь?Я должен использовать только javascript или jQuery - без PHP.Спасибо.

 $("#search").click(function(){ 

    var pharmacies = [];

    pharmacies[0] = ["Vaccaro", "Bagheria", "90011"];
    pharmacies[1] = ["Greco", "Bagheria", "90011"];
    pharmacies[2] = ["Timoneri", "Bagheria", "90011"];

    var names = [];
    var elem = document.getElementsByClassName("campi");
    for (var i = 0; i < elem.length; ++i) {
        if (elem[i].value !== "") {
            names.push(elem[i].value);
        }
    }
});

HTML:

<input class="campi" id="nome" type="text" name="name">
<input class="campi" id="indirizzo" type="text" name="address">
<input class="campi" id="città" type="text" name="city">
<input class="campi" id="cap" type="text" name="zip">

<button id="search" type="submit">Cerca</button>

<div id="result"></div>

1 Ответ

0 голосов
/ 20 мая 2018

Вы можете сделать это:

  1. Скопировать массив pharmacies в temp array.
  2. Получить все <input> элемент.
  3. Поиск среди<input> элементов для данного значения.
  4. Удалить элемент массива, если данное значение не найдено.
  5. Удалить неопределенные значения из массива Temp.
  6. Распечатать массив временных данных.

Результат:

var pharmacies = [
    [ 'Vaccaro', '', 'Bagheria', '90011' ],
    [ 'Greco', '', 'Bagheria', '90011' ],
    [ 'Timoneri', '', 'Bagheria', '90011' ]
];

function search() {
    var tempArr = pharmacies.slice( 0 ),
        elem = document.getElementsByClassName( 'campi' );

    for ( let i = 0; i < elem.length; ++i ) {
        var value = elem[ i ].value

        if ( value ) {
            for ( var j = 0; j < tempArr.length; ++j ) {
                if ( tempArr[ j ] != undefined ) {
                    if ( tempArr[ j ].indexOf( value ) == -1 ) delete tempArr[ j ]
                }
            }
        }
    }

    tempArr = tempArr.filter( Boolean );
    printResult( tempArr )
}

function printResult( arr ) {
    if ( arr.length ) {
        var result = '<table><tr><th>#</th><th>Nome</th><th>Indirizzo</th><th>Città</th><th>Cap</th></tr>';

        for ( var x in arr ) {
            result += '<tr><td>' + (+x + 1) + '</td>'
            for ( var y in arr[ x ] ) {
                result += '<td>' + arr[ x ][ y ] + '</td>'
            }
            result += '</tr>'
        }

        result += '</table>'
    } else {
        result = 'No data found'
    }

    document.getElementById( 'result' ).innerHTML =  result
}
input {
    margin: 5px
}
table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
    width: 100%
}

td, th {
    border: 1px solid #ccc;
    text-align: left;
    padding: 8px
}

tr:nth-child(even) {
    background-color: #ddd
}
<input class="campi" id="nome" type="text" name="name" placeholder="nome">
<input class="campi" id="indirizzo" type="text" name="address" placeholder="indirizzo">
<input class="campi" id="città" type="text" name="city" value="Bagheria" placeholder="città">
<input class="campi" id="cap" type="text" name="zip" placeholder="cap"><br>
<button id="search" type="submit" onclick="search()">Cerca</button><br><br>

<div id="result"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...