2013-06-25 3 views
0

Я установил некоторый код ajax для проверки многомерных полей внутри формы с помощью php. Код работает как шарм, но я хочу свести к минимуму используемый javascript.Ajax - mutiple validation

Как вы можете видеть в приведенном ниже коде, Im получает getElements ('input') ..., который проверяет все поля ввода, а затем getElements ('textarea'), который проверяет ... ya u know! ; o) Textarea - последняя строка в приведенном ниже коде, а javascript после этого совпадает с inpt . Я проверяю ввод, текстовое поле, список выбора, флажок и т. д. в моем контроллере с использованием php, но код после получения элементов является ТОЧНЫМ.

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

Может ли это сделать ???

window.addEvent('domready', function(){ 
$('container').getElements('input').addEvent('keyup', function(e){ 
    //stop the input-tag event 
    e = new Event(e).stop(); 
    //identify which item was activated 
    var querystring = this.title; 
    var value = this.value; 
    var myXHR = new XHR({ 
     method: 'get', 
     onSuccess: function(e){ 
      var myString = myXHR.response.text; 
      var myStringArray = myString.split("###RAWR###"); 
      $(myStringArray[1]).innerHTML = '<em class="checking">&nbsp;</em>'; 
      setTimeout(ajax , 3500); 
      function ajax(){ 
       $(myStringArray[1]).innerHTML = '<em class="'+myStringArray[2]+'">'+myStringArray[0]+'</em>'; 
      } 
     } 
    }); 
    myXHR.send('index2.php?option=com_component&task=validate&value='+value, querystring); 
}); 
$('container').getElements('textarea').addEvent('keyup', function(e){ 

ответ

0

Вы можете поместить тэги в цикл цикла и вызвать функцию с вашей проверкой.

window.addEvent('domready', function(){ 
    var tagNames = ["input", "textarea", "select"]; 
    for (var i = 0; i < tagNames.length; i++) 
    { 
     validate(tagNames[i]); 
    } 
}); 

function validate(tag) 
{ 
    $('container').getElements(tag).addEvent('keyup', function(e){ 
     //stop the input-tag event 
     e = new Event(e).stop(); 
     //identify which item was activated 
     var querystring = this.title; 
     var value = this.value; 
     var myXHR = new XHR({ 
      method: 'get', 
      onSuccess: function(e){ 
       var myString = myXHR.response.text; 
       var myStringArray = myString.split("###RAWR###"); 
       $(myStringArray[1]).innerHTML = '<em class="checking">&nbsp;</em>'; 
       setTimeout(ajax , 3500); 
       function ajax(){ 
        $(myStringArray[1]).innerHTML = '<em class="'+myStringArray[2]+'">'+myStringArray[0]+'</em>'; 
       } 
      } 
     }); 
     myXHR.send('index2.php?option=com_component&task=validate&value='+value, querystring); 
    }); 
} 
+0

Это выглядит интересно. Поэтому я должен определить каждое поле ввода с тегом имен, например или , и поиск цикла для тега имени? Все остальное, html, а также проверка контроллера остаются прежними? (Я не эксперт javascript ... этот код занял у меня 30 часов для выполнения; o) – Jakob

+0

Я обновил свой ответ и удалил флажок из списка тегов. Если вы используете ту же проверку для всех типов ввода, texareas и выпадающих списков, она должна работать. – pikand