2013-11-06 3 views
0

Я создал следующий вид: http://jsfiddle.net/baumdexterous/GYNSu/1/Как проверить радиокнопки?

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

Как включить проверку правильных кнопок с помощью этого существующего скрипта? Спасибо.

<ul> 
     <li class="required"> 
      <label>What is the U.S. Capital? Please select your answer below:</label> 
      <div class="questionsone"> 
       <input name="questionone" type="radio" value="a">a) New York<br> 
       <input name="questionone" type="radio" value="b">b) Washington DC<br> 
       <input name="questionone" type="radio" value="c">c) Seattle<br> 
       <input name="questionone" type="radio" value="d">d) Portland<br> 
      </div> 
     </li> 
    </ul> 

Update: У меня есть эта часть JavaScript, который работает с существующей проверки. Попытка выяснить, как добавить способ обнаружения радиокнопки:

<script> 
     $(function() { 
      var root = $("#wizard").scrollable(); 
      // some variables that we need 
      var api = root.scrollable(), 
       drawer = $("#drawer"); 
      // validation logic is done inside the onBeforeSeek callback 
      api.onBeforeSeek(function(event, i) { 
       // we are going 1 step backwards so no need for validation 
       if (api.getIndex() < i) { 
        // 1. get current page 
        var page = root.find(".page").eq(api.getIndex()), 
         // 2. .. and all required fields inside the page 
         inputs = page.find(".required :input").removeClass("error"), 
         // 3. .. which are empty 
         empty = inputs.filter(function() { 
          return $(this).val().replace(/\s*/g, '') == ''; 
         }); 
        // if there are empty fields, then 
        if (empty.length) { 
         // slide down the drawer 
         drawer.slideDown(function() { 
          // colored flash effect 
          drawer.css("backgroundColor", "#229"); 
          setTimeout(function() { 
           drawer.css("backgroundColor", "#fff"); 
          }, 1000); 
         }); 
         // add a CSS class name "error" for empty & required fields 
         empty.addClass("error"); 
         // cancel seeking of the scrollable by returning false 
         return false; 
         // everything is good 
        } else { 
         // hide the drawer 
         drawer.slideUp(); 
        } 
       } 
       // update status bar 
       $("#status li").removeClass("active").eq(i).addClass("active"); 
      }); 
      // if tab is pressed on the next button seek to next page 
      root.find("button.next").keydown(function(e) { 
       if (e.keyCode == 9) { 
        // seeks to next tab by executing our validation routine 
        api.next(); 
        e.preventDefault(); 
       } 
      }); 
     }); 
    </script> 
+0

Вы должны держать имена одинаковыми для этих переключателей, в противном случае вы можете выбрать все сразу.Сохранение имени одинаково гарантирует, что можно проверить не более одного из переключателей. –

ответ

0

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

0

Входные имена не все должны быть одинаковыми, то есть, а затем проверить, что значение questionone не равно нулю для проверки

+0

Если имена не все одинаковые, вы можете выбрать их все, что может быть неправильным вариантом использования в соответствии с контекстом, который он предоставил. –

1

Есть названия кнопок радио все то же самое. Это группирует их вместе. Тогда все, что вам нужно сделать, это сделать первый один имеет checked="true"

<input name="question" type="radio" value="a" checked="true">a) New York<br> 
<input name="question" type="radio" value="b">b) Washington DC<br> 
<input name="question" type="radio" value="c">c) Seattle<br> 
<input name="question" type="radio" value="d">d) Portland<br> 

Это делает их отправить по крайней мере одну вещь. В противном случае вы должны проверить выбранное значение ввода.

Также все текстовые входы могут иметь только атрибут required, и это гарантирует, что что-то там. HTML5 имеет это подтверждение.

http://www.w3schools.com/tags/att_input_required.asp

EDIT Вот скрипку я только что сделал с помощью JQuery. Это истинная проверка, которую вы хотите. http://jsfiddle.net/slyfox13/H9Dw2/

+0

Мне нравится идея автоматической проверки хотя бы одной из переключателей. –

0

Установить одноименное имя для всех радиокнопок, так как радиокнопки есть для одного выбора.

<input name="questionone" type="radio" value="a">a) New York<br> 
    <input name="questionone" type="radio" value="b">b) Washington DC<br> 
    <input name="questionone" type="radio" value="c">c) Seattle<br> 
    <input name="questionone" type="radio" value="d">d) Portland<br> 

Проверка с помощью JQuery:

if($("input[type=radio,name=questionone]:checked").length >0) 
{  
    /* do something */ 
} 
+0

Большое спасибо Дженсон - но как я могу получить существующую проверку (см. Скрипку)? – Ori

+0

@Ori Я нахожусь на мобильном устройстве, скрипка не загружается прямо сейчас. :( –

0

Прежде всего, необходимо изменить кнопки радио имена всех быть то же самое. ex

<ul> 
    <li class="required"> 
     <label>What is the U.S. Capital? Please select your answer below:</label> 
     <div class="questionsone"> 
      <input name="question" type="radio" value="a">a) New York<br> 
      <input name="question" type="radio" value="b">b) Washington DC<br> 
      <input name="question" type="radio" value="c">c) Seattle<br> 
      <input name="question" type="radio" value="d">d) Portland<br> 
     </div> 
    </li> 
</ul> 

Чтобы вы могли выбрать только те опции. Затем вам нужно создать функцию document.ready(). Добавьте этот код в документ document.ready()

$(document).ready(function() { 
    function RadioTest(){ 
    inputs = document.getElementsByName('question'); 
      for (index = 0; index < inputs.length; ++index) { 
       if(inputs[index].checked!=true){ 
           alert("radio not selected"); 
            return false; 
         } 
      } 

    } 
}); 
+0

Спасибо. Я попытался реализовать свой код в своей скрипке, но, похоже, не исправил его. Любые мысли? – Ori

+0

Я забыл change name = "questionon" to name = "question". Я внес изменения в код, который вы должны попробовать сейчас. – bassxzero

0

Вы должны указать имя для всех тегов радиовхода. как этот

<div class="questionsone"> 
      <input name="qstn1" type="radio" value="a">a) New York<br> 
      <input name="qstn1" type="radio" value="b">b) Washington DC<br> 
      <input name="qstn1" type="radio" value="c">c) Seattle<br> 
      <input name="qstn1" type="radio" value="d">d) Portland<br> 
    </div> 
Смежные вопросы