JQuery验证无法处理Ajax控件....!

时间:2010-10-07 06:48:43

标签: php jquery ajax validation

您好我的代码有问题我只想验证从Ajax response.text生成的状态

以下是状态字段的JQuery:

$(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响应时,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 个答案:

答案 0 :(得分:1)

如果没有看到实际的页面,我不确切知道这里发生了什么,但是你可能会尝试一些事情:

  1. 使用jQuery来执行你的ajax,因为你已经在使用它了。它没有错误和跨平台,这样你可以确定ajax部分没有错误。

  2. 我会移动行“var state = $(”#state“); var stateInfo = $(”#stateInfo“);”在函数内部,然后在document.ready块之外声明函数。这样你可以确保每次调用函数时,它都可以访问变量。

  3. 如果您的ajax调用正在替换您正在验证的输入,则每次调用ajax时都需要重新绑定事件。使用jQuery,您可以使用回调参数执行此操作。

  4. 我假设3号是你的问题,所以先试试吧。