2014-12-17 3 views
0
<form action="#" onsubmit="return validateForm()" method="post"> 
      <table> 
        <tr> 
         <td><p> 1. </p></td> 
         <td><label> I am cool </label></td> 
         <div class="allQuestion"> 
         <?php for($i=1; $i<=10; $i++){?><td><input type="radio" name="Dquestion[1]" value="<?=$i?>"> <?=$i?> </td> <?php } ?> 
         </div> 
        </tr> 
</table><!-- strength_table end --> 
<input type="submit" value="Submit"><br/> 
</form> 

JSбыстрый HTML и JavaScript

function validateForm(){ 
    var questions = document.getElementsByClassName("allQuestion"); 
    for(var j=0; j<questions.length; j++){ 
    if(!isOneInputChecked(questions[j], "radio")){ 
     formValid = false; 
    } 
    } 
    alert(formValid ? "Submisson succesful!" : "Submisson Failed"); 
    return formValid; 
} 



function isOneInputChecked(sel){ 
    var inputs = sel.getElementsByTagName('input'); 

    for(var k = 0; k < inputs.length; k++){ 
    if(inputs[k].checked) 
     return true; 
    }; 
    return false; 
}; 

Я использую это, чтобы проверить мой радио вопрос, работает отлично, но когда я поставил <td> перед тем <input>, это работает странно, я знаю, что это цель, эффект все input warp by allQuestion и td блокирует его.

любая идея, как я держу тд на месте и создаю скрипт? я судимый этот код, но didt работы

var questions = document.getElementsByClassName("allQuestion").getElementsByTag("Td"); 
+0

Не хранить DIV внутри таблицы, а не хранить td в div. Это бессмысленно. Просто дайте td вашему классу Question и проведите его через цикл foreach или что-то еще. – Refilon

+0

понял ~ спасибо –

ответ

0

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

function validateForm(){ 
    var checked = document.querySelector('form').elements.some(function(el){ 
    return el.checked; 
    }); 
    if(checked){ 
    //at least one is checked 
    } else { 
    //none are checked 
    } 
} 
+0

да, я делаю, поэтому я просто удаляю стол? и стиль с css со всем моим радио? –

+0

да добавьте к ним классы, а затем создайте их в css с помощью селектора классов или ** input [type = "radio"] **, который может быть вашим селектором –

+0

спасибо, я сделаю так ~ спасибо за совет –

0
  1. Я не точно проверить это, а просто попытаться дать идентификатор к тду, что и являются целевыми. var questions = document.getElementsByTag ("id_name"); // id_name является идентификатором td

* просто дополнительные примечания, используя таблицу, не является хорошей практикой, используйте другие простые HTML и CSS для более гибкого и читаемого кода.

+0

спасибо тоже я знаю, что мне нужно делать. –