2013-09-18 2 views
0

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

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

<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, а затем вставьте ЗНАЧЕНИЕ. Раньше я вводил идентификатор ввода.

$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[]')"; 
+0

Я понял, что мне нужно изменить инструкцию SQL. Мое имя html для 'group1'. Затем он отправил значение с выбранными значениями VALUES. – DDDD

ответ

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

Это подтверждено правильно. но похоже, что мне нужны отдельные идентификаторы ввода. Думаю, я сделаю отдельные столбцы в моей базе данных – DDDD

+0

@DDDD Не могли бы вы выбрать это в качестве ответа. Если вам нужно какое-либо дальнейшее объяснение, дайте мне знать. – user1056677

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

Какая часть является валидацией? – DDDD

+0

Вы сделали бы проверку с помощью Javascript. user1056677 имеет правильную идею. Но попробуйте отделить свой код :) – zsawaf

+0

Хорошо, спасибо. – DDDD

Смежные вопросы