2009-10-27 4 views
1

Я использую следующий код, чтобы проверить, установлен ли флажок на моей странице веб-сайта. Но есть несколько флажков, и я хочу использовать эту же функцию. Я хочу вызвать эту функцию из кнопки «Отправить» и передать имя поля в качестве аргумента. Он не должен проверять этот флажок.[JavaScript]: Как определить переменную как тип объекта?

function CheckTermsAcceptance() 
{ 
    try 
    { 
     if (!document.getElementById('chkStudent').checked) 
      alert("You need to accept the terms by checking the box.") 
      return false; 
    } 
    catch(err) 
    { 
     alert(err.description); 
    } 
} 

ответ

2
function CheckTermsAcceptance(element){ 
    try{ 
     if (!element.checked){ 
      alert("You need to accept the terms by checking the box.")  
      return false; 
     } 
    }catch(err){ 
     alert(err.description); 
    } 
} 

и вы называете его, как:

CheckTermsAcceptance(document.getElementById('chkStudent')); 

что это?

+0

Спасибо, сработало. – RKh

+0

Это не совсем так: пропавшая скобка после оператора if заставит это всегда возвращать false. Представление формы будет невозможно. –

+0

правда, я его исправил – Victor

4

Просто передайте параметр CheckTermsAcceptance(). Вы также пропустили скобу после предупреждения - в этом блоке if есть два утверждения, и вы всегда будете выполнять return false без него.

function CheckTermsAcceptance(checkboxName) 
{ 
    try 
    { 
     if (!document.getElementById(checkboxName).checked) { 
       alert("You need to accept the terms by checking the box.")  
       return false; 
     } 
    } 
    catch(err) 
    { 
     alert(err.description); 
    } 
} 

Для вызова этого из вашей кнопки отправки, имеют функцию как validateForm, который призвал представить. Затем просто создайте список флажков и передайте их идентификаторы в CheckTermsAcceptance.

Обратите внимание, что этот вид проверки обрабатывается очень гладко с помощью jQuery и его ilk. Например, here's плагин проверки jQuery.

+0

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

0

Извините, что не ответил на ваши вопросы. Но вы должны серьезно подумать об использовании jQuery и jQuery validate.

0

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

function CheckTermsAcceptance(checkBox) //added argument 
{ 
    try 
    { 
     if (!checkBox.checked) { //added block to group alert and fail case 
      alert("You need to accept the terms by checking the box.")  
      return false; 
     } 
     return true; //added success case 
    } 
    catch(err) 
    { 
     alert(err.description); 
    } 
} 

как только вы это в месте, вы можете использовать это на вашей форме проверки, как так

<form id="formid" action="" onsubmit="return validate('formid');"> 
<input type=checkbox name="name" id="name"><label for="name">Name</label> 
<input type=checkbox name="name2" id="name2"><label for="name2">Name2</label> 
<input type=submit> 
</form> 
<script> 
function validate(formid) { 
    var form = document.getElementById(formid); 
    for (var i = 0; i < form.elements.length; i++) { 
     var elem = form.elements[i]; 
     if (elem.type == 'checkbox' && !CheckTermsAcceptance(elem)) { 
      return false; 
     } 
    } 
    return true; 
} 
</script> 

я могу подтвердить, что это работает в Firefox 3.5

также JQuery и jQuery.validate сделать это очень легко реализовать в очень декларативный способ.

0

Вы также можете использовать дополнительные аргументы, чтобы также использовать различные параметры.

function CheckTermsAcceptance() 
{ 
    var ctrl = arguments[0]; 
    var valueExpected = arguments[1]; 
    var outputMessage = arguments[2]; 
    if(valueExpected == null) valueExpected = true; 
    if(outputMessage == null) outputMessage = "You need to accept the terms by checking the box."; 

    try 
    { 
     if(ctrl.checked == valueExpected) 
     { 
      Log.Message(outputMessage); 
     } 
    } 
    catch(err) 
    { 
     alert(err.description);    
    } 
} 
Смежные вопросы