У меня будет форма, где будет неизвестное количество вводов текста! Проблема в том, что я должен контролировать вводимые данные, если они действительны. Вот как я это делаю:

<form action = "invita-utenti_.php" method = "POST" id="invita">
    <div id = "cont-nomi">
        <ul id = "utenti">          
            <?php
                $i = 2;
                while($i <= ($n_part)){                 
                    echo'
                        <li class = "utenti">
                             <label for="nome" class = "crea-camp-title"> Utente '.($i).' </label>
                                <input type = "text" name = "utente'.$i.'" id = "utente'.$i.'" size = "16" class = "utenti"  />
                        </li>';
                                $i++;                   
                    }               
            ?>
        </ul>
        <input type = "submit"<input type = "submit" value = "Invita" class = "reg-utenti" />
    </div>
</form>

Вот сценарий Js:

$(document).ready(function() {
    $("#invita").validate({
        rules: {
            utente2: 
                {required: true,
                remote : 'check_inviti.php' 
            }
        },
        messages : {
            utente2:
                {required:"inserire email o nome utente",
                remote: "inserire email o nome utente valido"
            }
        }
    });
});

* Check_inviti.php * в порядке. Проблема, как вы можете видеть, заключается в том, что он проверяет только "utente2" , но это может быть даже "utente3" "utente4" , чтобы добраться до "utente100"

Есть ли быстрый способ проверить все поля ввода без необходимости выполнять while в js (передавая переменную через файлы cookie)?

0
DanielZanchi 26 Фев 2014 в 23:20

1 ответ

Лучший ответ

Для динамического применения правил можно использовать метод .rules('add') подключаемого модуля. Все поля становятся целевыми сразу с помощью селектора "начинается с", прикрепленного к jQuery .each().

$(document).ready(function() {

    $("#invita").validate({   // initialize plugin on your form
        // other rules or options
    });

    $('input[name^="utente"]').each(function() {  // target all fields starting with "utente"
        $(this).rules('add', {  // declare the rules on each targeted field
            required: true,
            remote : 'check_inviti.php',
            messages : {
                required:  "inserire email o nome utente",
                remote: "inserire email o nome utente valido"
            }
        });
    });

});
0
Sparky 26 Фев 2014 в 23:47
Спасибо, все работает! Есть ли способ использовать "input [name ^ =" utente "] в PHP? На моей странице php у меня есть что-то вроде этого: $ username = $ _GET ['utente2']; Как я могу сделать это для всех пользователей?
 – 
DanielZanchi
27 Фев 2014 в 20:13
Нормально решается с помощью: foreach ($ _ GET as $ key => $ value) if (strpos ($ key, 'utente') === 0) $ username = $ value; Спасибо!
 – 
DanielZanchi
27 Фев 2014 в 20:25
@ Danny182, пожалуйста! Пожалуйста, не забудьте «принять» мой ответ, нажав зеленую галочку.
 – 
Sparky
27 Фев 2014 в 21:12