Проверка JQuery не работает на Ajax Control ....! - PullRequest
0 голосов
/ 07 октября 2010

Привет, у меня есть проблема с моим кодом. Я просто хочу проверить состояния, которые генерируются из Ajax response.text

Вот поле JQuery for State:

$(document).ready(function () {
    var form = $("#addStudentfrm");

    var state = $("#state");
    var stateInfo = $("#stateInfo");

    state.blur(validateStates);
    state.keyup(validateStates);


    function validateStates() {
        if (state.val() == '') {
            state.addClass("error");
            stateInfo.text("Please Select/Enter State");
            stateInfo.addClass("error5");
            return false;
        } else {
            state.removeClass("error");
            stateInfo.text("");
            stateInfo.removeClass("error5");
            return true;
        }

    }
});

Здесь PHPФункция для получения всех состояний в соответствующей стране:

public function getAllCountryStates($post){
$que = "Select * from ".WMX_COUNTRY." where code = '".$post[value1]."'";
$cRes = $this->executeQry($que);
$cResult = $this->getResultRow($cRes);
$cId = $cResult['id'];
$stateObj = new Admin;
$rdat = $post['opr'];
$rdtar = explode('.', $rdat);
$res = @mysql_fetch_row(mysql_query("Select * from ".$rdtar['1']." where id = ".$rdtar['0']));
$usts = $res['state'];
$result = $stateObj->selectQry(WMX_STATE,"country_id=$cId",'','');
$number = $stateObj->getTotalRow($result);

if($number > 0){
        $getSelect ="<select name='state' id='state' class='textboxcss'>";
    while($stateVal = $stateObj->getResultRow($result)){
               $getSelect.="<option value='".$stateVal[state]."'>$stateVal[state]</option>";
}
    $getSelect.="</select>";
}else{
    if($usts!=''){
        $getSelect = "<input type='text' name='state' id='state'class='textboxcss' value='$admnState'/>";
    } else {
        $getSelect = "<input type='text' name='state' id='state' class='textboxcss'/>";
    }
}
    echo $getSelect;  }

В текстовом поле «Исходное состояние» выполняется проверка

, но когда элемент управления поставляется с Ajax Response, Jquery не проверяет его для пустых записей

Моя функция Ajax:

function DataByPost(url,objId,postData,div_id){
    var selId = objId.split('|');
    var passData = postData;
    var AJAX = null;
    if (window.XMLHttpRequest) {
       AJAX=new XMLHttpRequest();
    } else {
       AJAX=new ActiveXObject("Microsoft.XMLHTTP");
    }
   if (AJAX==null) {
   alert("Your browser doesn't supportAJAX.");                      
       return false
   } else {
           AJAX.open("POST",url,true);
       AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
       AJAX.onreadystatechange = function() {
            if (AJAX.readyState==4 || AJAX.readyState=="complete"){  
                alert(AJAX.responseText);
                var msg=AJAX.responseText;
                var idary = new Array();
                document.getElementById(selId).value = msg;
                document.getElementById(selId).innerHTML = msg;
            }
       }
       AJAX.send(passData);
   }
}
//First Function 
function showContent(url,arg,opr,sel_id,div_id)
{   
 var postData='';   
 var formVal=arg.split('|');
 if(document.getElementById(div_id))   
           document.getElementById(div_id).style.display='';
 if(document.getElementById(sel_id))   
 document.getElementById(sel_id).style.display='';
    for(i=1;i<=formVal.length;i++) 
        var postData =postData + 'value'+i+'='+escape(formVal[i-1])+'&';
        postData=postData + 'opr='+opr;
    DataByPost(url,sel_id,postData,div_id);         
}

1 Ответ

1 голос
/ 07 октября 2010

Я не знаю точно, что здесь происходит, не видя реальной страницы, но несколько вещей, которые вы могли бы попробовать:

  1. Используйте jQuery для создания ajax, поскольку вы уже используете его. Он не содержит ошибок и является кроссплатформенным, поэтому вы можете быть уверены, что в части AJAX нет ошибок.

  2. Я бы переместил строки "var state = $ (" # state "); var stateInfo = $ (" # stateInfo ");" затем внутри функции объявите функцию за пределами вашего блока document.ready. Таким образом, вы можете быть уверены, что каждый раз, когда вызывается функция, она имеет доступ к переменным.

  3. Если ваш ajax-вызов заменяет проверяемый вами ввод, вам нужно будет повторно привязывать события каждый раз, когда ваш ajax-вызов заканчивается. С помощью jQuery вы можете сделать это с помощью параметра обратного вызова.

Я предполагаю, что проблема № 3 - ваша проблема, поэтому попробуйте сначала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...