2015-02-03 3 views
2

У меня есть несколько циклов, созданных динамически и называемых act1 [], act2 [], act3 [] .. до act10 []. (может или не может считаться до 10)Проверка множественного выпадающего списка с использованием цикла for в javascript

Теперь я хочу отправить форму и получить все значения выпадающего списка, но FIRST Я хочу проверить, не будет ли все выпадающее значение равно «0» (i поместить метку в значение = 0,

напр .:

<option value=0>Select Activity..</option> 

Я пытаюсь поставить «onsubmit» атрибут в виде тега, так что он будет идти первым в сценарии перед переходом к следующей странице. I поставили массив, чтобы подсчитать количество созданных строк, но теперь я имею в наличии подтверждение. Вот мой код:

<script> 
function validateForm(){ 
var table = document.getElementById('activityTable'); 
var rowCount = table.rows.length; 

for(var a=1; a<=rowCount; a++){ 
    var dd = document.getElementById("act"+ a +"[]"); 
    var ddval = dd.value; 

    if (ddval!=0){ 
     //dont know what to put 
    } 
    else{ 
     //don't know what to put 
    } 
} 
} 
</script> 

Я также хочу, чтобы функция оставила страницу одной и той же, если она возвращает значение false и переходит на следующую страницу, если возвращает true.

ответ

1

Вы можете вызвать функцию validateForm в onsubmit и вернуть значение true (validated) или false (not validated). Что-то вроде этого:

<!--* to validate before form submit, include 'return' inside your onsubmit tag *--> 
<form name='myForm' action='path/to/file.php' onsubmit='return validateForm()' 
method='post'> 
    <!-- Make sure your form tags are completely outside your table, 
     mixing them could result in invalid HTML which causes problems 
     (for best results, I'd ditch the table and use CSS instead) --> 
<table>Your Table Here</table> 
</form> 

<script> 
function validateForm(event){ 
    var table = document.getElementById('activityTable'); 
    var rowCount = table.rows.length; 
    var allValid = true; 

    for(var a=1; a<=rowCount; a++){ 
     var dd = document.getElementById("act"+ a +"[]"); 
     var ddval = dd.value; 

     if (ddval!=0){ 
      allValid = true; 
      // open the console so you can watch logs, this helps 
      // for troubleshooting but remove those in production 
      console.log(a + ' returned true ' + allValid); 
     } 
     else{ 
      allValid = false; 
      console.log(a + ' returned false ' + allValid); 
      // you shouldn't need this, but if returning false 
      // doesn't work try adding preventDefault (you'll also 
      // have to pass 'event' into your function above) 
       event.preventDefault(); 
     } 
    } 
    // After you've looped through all rows, allValid will return true if 
    // they were all true, or false if any of them were still 0. 
    console.log('returning allValid as: ' + allValid;) 
    return allValid; 
} 
</script> 
  • проверка onsubmit = "возвращение validateForm()" (возвращает истину или ложь)
  • смотреть ваши теги формы/таблицы, недействительный HTML может вызвать проблемы
  • надстройку консольные журналы или предупреждения, чтобы помочь устранить неполадки
  • add event.preventDefault if false (но вам не нужно это, возврат false должен прекратить отправку формы)

Если вы попробуете это и все еще не работаете, вы можете попробовать разместить свой код формы/таблицы, чтобы мы могли лучше устранить все. Надеюсь это поможет!

+0

Пока это нормально, но как я могу сделать свою форму на той же странице, если она вернет false и перейдет на следующую страницу, если она вернёт true? –

+0

Привет, я отредактировал свой ответ, чтобы добавить несколько подробностей и комментариев :) – brennan

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