Здравствуйте, у меня есть следующая функция:

... var model = $("#carModel");
.... model.change(validModel);

function validModel(){
     if(model.val() == 0){
            model.addClass("errorJS");
            return false;
            }else{
            model.removeClass("errorJS");
            return true;
            }  
    }

Я получаю идентификатор carmodel из поля выбора, сгенерированного после вызова AJAX. Я могу получить его значение в консоли Firebug, но функция не выполняется. Даже жестко я использую model.livequery (validModel);

// Класс ошибки JS помещает красную рамку вокруг элемента, если функция возвращает false

1
jartaud 8 Июн 2010 в 08:51

3 ответа

Лучший ответ

Среди других проблем model ничего не значит в контексте функции. Кроме того, нет смысла вызывать change(validModel) с этой функцией, поскольку она возвращает только значение true / false. Вам нужно будет сделать что-то вроде:

model.change(function() {
    var truefalse = validModel(this);
    //do something with truefalse
});

И измените определение validModel на

var validModel = function(elem){
   if($(elem).val() == undefined){
       $(elem).addClass("errorJS");
       return false;
   } else {
       $(elem).removeClass("errorJS");
        return true;
   } 
}
1
colinmarc 8 Июн 2010 в 04:59

Я понял, проблема была в готовом событии, я определил функцию из него и вуаля.

0
jartaud 24 Июл 2010 в 03:22
function getXMLHTTP() {
    var xmlhttp=false;  
    try{
    xmlhttp=new XMLHttpRequest();
    }
    catch(e){       
    try{            
    xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(e){
    try{
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e1){
    xmlhttp=false;
      }
     }
  }
   return xmlhttp;
}

function getModel(idCar) {      
    var strURL="http://localhost/root509dir/Includes/model.php?idCar="+idCar;
    var req = getXMLHTTP();
    if (req) {
          req.onreadystatechange = function() {
          if (req.readyState == 4) {
          if (req.status == 200) {document.getElementById('modelCont').innerHTML=req.responseText;
     } else {
       alert("There was a problem while using XMLHTTP:\n" + req.statusText);
       }
    }               
}           
    req.open("GET", strURL, true);
    req.send(null);
    }       
}

Model.php

if(isset($_GET['idCar'])){
    $idCar = mysql_real_escape_string($_GET['idCar']);
}
$modelQR = mysql_query("SELECT *FROM model WHERE from_make = '$idCar'") or die(mysql_error());?>
<?php echo htmlentities(PUB_AN_MOD); ?><em>*</em>
<select name="carmodel" id="carmodel">
<option value="0">----------------</option>
<?php while($model = mysql_fetch_array($modelQR)){?>
<option value="<?php echo htmlentities($model['id_model']);?>">
          <?php echo htmlentities($model['car_model']);?></option>
<?php }?>
</select>

Cars.php

<?php
$QRcars = mysql_query("SELECT *FROM car ORDER BY car_make") or die(mysql_error());
if(mysql_num_rows($QRcars)>0){?>
<select name="cars" id="cars" onchange="getModel(this.value);"><option value="0">-------------------</option>
<?php while($cars = mysql_fetch_array($QRcars)){?>
<option value="<?php echo htmlentities($cars['id_car']);?>">
<?php echo htmlentities($cars['car_make']);?></option>
<?php }?>
</select>       
<?php }?>
<span id="modelCont">
<?php echo htmlentities(PUB_AN_MOD); ?><em>*</em>
<select name="model" id="model">
<option value="0">---------</option>
</select>
</span>
0
jartaud 8 Июн 2010 в 06:20