2014-01-21 3 views
0

Я сделал форму HTML с несколькими полями ввода, подобные этим:Выберите несколько полей ввода Javascript

  <tr> 
       <td>inputfield1</td> 
       <td><input type="number" class="bestelformulier" name="inputfield1" onkeyup="validateForm()" min="1" max="999"></td> 
      </tr> 
      <tr> 
       <td>inputfield2</td> 
       <td><input type="number" class="bestelformulier" name="inputfield2" min="1" max="999"></td> 
      </tr> 
      <tr> 
       <td>inputfield3</td> 
       <td><input type="number" class="bestelformulier" name="inputfield3" min="1" max="999"></td> 
      </tr> 
      <tr> 
       <td>inputfield4</td> 
       <td><input type="number" class="bestelformulier" name="inputfield4" min="1" max="999"></td> 
      </tr> 

Как вы можете видеть мое поле ввода 1 имеет OnKeyUp событие под названием 'validateForm(), которая выполняет следующие :

function validateForm(){ 
     if(document.forms['form'].inputfield1.value == "") 
     { 
      document.forms[0].submit.disabled=true; 
     } 
     else { 
      document.forms[0].submit.disabled=false; 
     } 
    } 

Он отключает кнопку, если ничто не заполнено в inputfield1, но разрешает ее, если там что-то есть.

Это работает так, как должно.

Но, как вы можете видеть, у меня есть несколько полей ввода, для которых всем нужна такая функция.

Кнопка должна быть отключена при 0 из 11 полей заполнены, но должна быть включена, если даже один из них заполнен (не имеет значения, один)

Как сделать так, что если 1 из этих 11 полей будет заполнено кнопкой?

Вся помощь приветствуется grealy!

+0

Вам нужно либо сохранить состояние всех других входов, либо проверять каждый каждый раз, когда вы вызываете 'validateForm'. В противном случае лучше всего переместить вызов 'validateForm' в форму« onsubmit »и проверить все поля. –

+0

И что я должен разместить в самой проверке? потому что он все равно будет проверять только поле ввода1 –

ответ

1

Попробуйте что-то вроде этого, и добавить его к отключение всех полей ввода

function validateForm() 
{ 

    var allEmpty = (document.forms['form'].inputfield1.value == "" && 
        document.forms['form'].inputfield2.value == "" && 
        document.forms['form'].inputfield3.value == "" && 
        document.forms['form'].inputfield4.value == ""); 

    if(allEmpty) // if all are empty disable the button, else enable it. 
    { 
     document.forms[0].submit.disabled=true; 
    } 
    else { 
     document.forms[0].submit.disabled=false; 
    } 
} 
+0

Единственная проблема с этим - масштабирование, если ему вдруг нужно добавить еще 10 полей или все поля, необходимые для изменения имени, могут стать раздражающими для поддержания. Хорошее решение в целом :) – Nunners

+0

Спасибо, человек, это работает просто отлично! –

+0

Добро пожаловать. –

0

Для этого вам необходимо передать идентификатор элемента функции.

сделать вызов функции, как этот

onkeyup="validateForm('inputfield1')"; 

применить это для всех полей ввода и функция обновления, как показано ниже

Попробуйте

function validateForm(eleId){ 
    var value = document.getElementById(eleId).value; 
    if(value == "") 
    { 
     document.forms[0].submit.disabled=true; 
    } 
    else { 
     document.forms[0].submit.disabled=false; 
    } 
} 
+0

Я бы сомневался, что это будет работать, поскольку передаваемый 'eleId' будет строкой, а не элементом под' document.forms [] ' – Nunners

+0

@Nunners, может быть, вы правы, я сделал обновил ответ :) – nrsharma

+0

Боюсь, что все еще не работает: http://jsfiddle.net/Nunners/YBHE6/ – Nunners

0
var input = document.getElementsByTagName('bestelformulier'); //you can use another class if you want.. as 'required' 
var cansubmit = false; 
for (i=0; i<input.length; i++) 
    if(input[i].value.trim() != "") 
     cansubmit = true; 

document.forms[0].submit.disabled = cansubmit; 

Надеюсь, это поможет.

+0

жаль скобка в конце «для» ... вы можете удалить это. Я отредактирую ее. –

0

Ваш javascript также должен проверить правильность значения (от 1 до 999). Это также проверяет форму на submit, а не только на редактируемые поля. Полный код.

<form name="form" onsubmit="return validateForm()"> 
    <tr> 
      <td>inputfield1</td> 
      <td><input type="text" class="bestelformulier" name="inputfield1" onkeyup="validateForm()" min="1" max="999"></td> 
     </tr> 
     <tr> 
      <td>inputfield2</td> 
      <td><input type="number" class="bestelformulier" name="inputfield2" onkeyup="validateForm()" min="1" max="999"></td> 
     </tr> 
     <tr> 
      <td>inputfield3</td> 
      <td><input type="number" class="bestelformulier" name="inputfield3" onkeyup="validateForm()" min="1" max="999"></td> 
     </tr> 
     <tr> 
      <td>inputfield4</td> 
      <td><input type="number" class="bestelformulier" name="inputfield4" onkeyup="validateForm()" min="1" max="999"></td> 
     </tr> 
     <input type="submit" disabled name="submit" /> 
</form> 

<script type="text/javascript"> 
    function validateForm() {  
     var isValid = false; 
     if (document.forms[0].inputfield1.value > 0 && document.forms[0].inputfield1.value < 1000) { 
      isValid = true; 
     } 
     if (document.forms[0].inputfield2.value > 0 && document.forms[0].inputfield2.value < 1000) { 
      isValid = true; 
     } 
     if (document.forms[0].inputfield3.value > 0 && document.forms[0].inputfield3.value < 1000) { 
      isValid = true; 
     } 
     if (document.forms[0].inputfield4.value > 0 && document.forms[0].inputfield4.value < 1000) { 
      isValid = true; 
     } 
     if (!isValid) { 
      document.forms[0].submit.disabled = true; 
     } else { 
      document.forms[0].submit.disabled = false; 
     } 
     return isValid; 
    } 
</script> 
Смежные вопросы