2016-12-29 98 views
0

被选择我有使用选择的选项值填充的形式的javascript函数。当选择该选项,它填充字段和其它选择(“selVehicleEditModel”),但不选择一个选项。否选项在<select>

function displayEditVehicle() { 
    var data = jQuery('#selVehicleEditList option:selected').val(); 
    var dataArray = data.split("|"); 
    jQuery('#inpVehicleId').val(dataArray[0]); 
    jQuery('#selVehicleEditMake option[value="' + dataArray[4] + '"]').attr("selected", "selected"); 
    jQuery('#inpVehicleEditVehicleId').val(dataArray[9]); 
    jQuery('#inpVehicleEditColor').val(dataArray[7]); 
    jQuery('#inpVehicleEditLicense').val(dataArray[8]); 
    jQuery('#inpVehicleEditYear').val(dataArray[6]); 

    //get all models for make from database 
    updateVehicleEditModel(); 
    jQuery('#selVehicleEditModel option[value="' + dataArray[5] + '"]').attr("selected", "selected"); 
} 

起初,我想也许有一个与模型的问题(dataArray中的[5])空白或空或别的意外,所以我把警报在:

updateVehicleEditModel(); 
    alert(dataArray[5]); 
    jQuery('#selVehicleEditModel option[value="' + dataArray[5] + '"]').attr("selected", "selected"); 

那确认值(在dataArray中“资源管理器” [5],在选项值“资源管理器”)是正确的,但它也选择了正确的选择。警惕了,现在又回到没有选择任何选项。

关于这里发生了什么的任何想法?

+1

不'的jQuery( '#selVehicleEditModel')VAL(dataArray中的[5]);'你的工作?听起来像一个竞争条件,它不知道该选项存在,除非它等待一点(你的'alert'会导致一些阻塞)。 – h2ooooooo

+1

正如上述评论说,你的'updateVehicleEditModel'功能是建立数据库调用来获取数据。这无疑是异步发生的。如果没有警报,下一行会在任何内容填充之前执行。 – rockerest

+0

@ h2ooooooo和rockerest:这就是我的想法,但A)不确定,B)想不出一种解决方法。 :) –

回答

0

如果您在updateVehicleEditModel函数中使用AJAX调用,那么请考虑将下一个语句(在接收数据和/或使用从ajax调用接收的数据执行后调用的语句任何东西)在AJAX调用的成功回调中。

+0

这个伎俩。 –