Проверка Javascript перед сохранением информации

0

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

Вот таблица в моей таблице. Примечание. В следующих сценариях я меняю идентификатор ввода на одно и то же для всех или как уникальный идентификатор.

<tr>
        <td style="width: 120px">Select An Option *:</td>
        <td>
            <div >
                    <h3>text</h3>
                    <?php // date activator

                        $display_start = "2013-09-01";
                        $display_end = "2013-10-17";
                        if((date("Y-m-d") >= $display_start) && (date("Y-m-d") <=
                        $display_end)){ ?>
                        <input id="selection" type="radio" name="group1"  value="Before17th" >  text  here  </option></br></br>

                    <?php } ?>
                    <?php // date activator

                        $display_start = "2013-10-18";
                        $display_end = "2014-10-18";
                        if((date("Y-m-d") >= $display_start) && (date("Y-m-d") <=
                        $display_end)){ ?>
                        <input id="selection" type="radio" name="group1" value="After17th"> text  here   </option><br/></br>
                        <?php } ?>
                        <input id="selection" type="radio" name="group1" value="Already Own Devices">   text  here   </option><br/> 
            </div>
        </td>
    </tr>

Я попробовал этот скрипт для проверки, этот, по-видимому, проверяет первый вариант. Если я выберу второй вариант, он не поймает, что выбран этот выбор, сделав его истинным.

if ( ($('input[name="group1"]').attr('checked') == false )) {
    $("#errors").after('<span class="error">Please specify an option.</span>');
    hasError = true;
  }

Я попробовал этот скрипт с тем же идентификатором ввода для всех параметров. Это происходит только тогда, когда выбран первый вариант. Второй выбранный параметр все еще проверяется как false.

if ( ($("#selection").attr('checked') == false )) {
    $("#errors").after('<span class="error">Please specify an option.</span>');
    hasError = true;
  }

Я также пробовал этот скрипт, где я дал каждому входному идентификатору уникальный. Это хорошо работает, но когда я хочу использовать POST для моей базы данных, мне нужно будет создать отдельный столбец для каждого входного идентификатора.

 // validate option selection
if ( ($("#selection").attr('checked') == false ) && ($("#owndevices").attr('checked') == false )) {
    $("#errors").after('<span class="error">Please select an option.</span>');
    hasError = true;
 }

if ( ($("#selection").attr('checked') == false ) && ($("#onsite").attr('checked') == false )) {
    $("#errors").after('<span class="error">Please select an option.</span>');
    hasError = true;
 }

Есть ли способ проверить подлинность скрипта, если один из них проверен с использованием того же идентификатора ввода. Или, может быть, использовать значение или имя группы?

благодаря

SQL ERROR, мне нужно было изменить имя html на group1, а затем вставить VALUES. Раньше я вводил идентификатор ввода.

$sql = "INSERT INTO 
            ucm_signup 
            ( company, address1, address2, city, province, zip, fname, lname, email, phone, 
                session, iama, buyfrom, group1 )
        VALUES
            ( '$_POST[company]','$_POST[address1]','$_POST[address2]','$_POST[city]',
                '$_POST[province]','$_POST[zip]','$_POST[fname]','$_POST[lname]','$_POST[mail]',
                '$_POST[phone]','$_POST[session]','$_POST[iama]','$_POST[buyfrom]','$_POST[]')";

2 ответа

1
Лучший ответ

Вы на правильном пути с некоторыми из того, что вы написали. Но две вещи, которые следует отметить:

  1. Используйте только один идентификатор для каждого элемента (группа с именем, классом или любым другим атрибутом, который вы хотите).
  2. Когда вы используете jQuery для выбора более одного элемента, возвращается массив.

Попробуйте сделать что-то вроде

var radios = $('input[name="group1"]:checked');
if (radios.length > 0) {
        console.log('success'); 
} else {
        console.log('you need at least one radio checked'); 
}
  • 0
    Это подтверждено правильно. но, похоже, мне нужно иметь отдельные входные идентификаторы. Я думаю, я сделаю отдельные столбцы в моей базе данных
  • 0
    @DDDD Не могли бы вы выбрать это в качестве ответа. Если вам нужны дальнейшие объяснения, дайте мне знать.
0

Ну, в первую очередь я бы сделал, я бы отделил ваш html-код от вашего php. Это считалось плохим стилем.

В вашем html файле укажите свою форму:

Я просто сокращу радиокнопки, и, надеюсь, вы получите большую картинку :)

<form action="php-to-process.php" method="POST">
 <input type="radio" name="selected" value="male">Something<br>
 <input type="radio" name="selected" value="female">Something<br>
 <input type="submit"/>
</form>

хорошо, так что происходит сейчас, когда пользователь нажимает submit, выбранное значение переходит на страницу php. Обратите внимание, как вы обращаетесь к имени, а не к id на странице php.

В вашем php файле у вас будет что-то вроде

<?php
  $value = $_POST['selected'];
?>

то вы можете делать все, что хотите.

Если вы не хотите кнопку отправки, вы можете добавить обработчик событий, чтобы что-то вроде

onClick="document.getElementById("formID").submit();"

поэтому, когда пользователь нажимает на эту кнопку, форма отправляется.

Отвечает ли это на ваш вопрос?

  • 0
    Какая часть является проверкой?
  • 0
    Вы бы сделали проверку с использованием Javascript. user1056677 имеет правильную идею. Но попробуйте отделить ваш код :)
Показать ещё 1 комментарий

Ещё вопросы

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