2011-12-01 28 views
0

更新:DOM是创建的#dockhouse-reservation-vessel第二选择实例。它覆盖第一个是“真实”的第一个,其值正确AJAXed选择表格元素默认为第一个选项即使改变

事件被触发,数据被检索并被替换。 #dockhouse-reservation-vessel的值显示在alert()中,但不在$_POST中。如果我注释掉第二块jQuery,则问题select的值被正确记住。

$('form').delegate('#dockhouse-reservation-owner','change', function(){ 
    $.ajax({ 
     url: '/dockhouse/ajax/vessels/' + $(this).val() + '/', 
     success: function(data){ 
      $('#dockhouse-reservation-vessel').empty(); 
      $('#dockhouse-reservation-vessel').append(data); 
     } 
    }); 
}); 

data表示option元素:下面

<!DOCTYPE html> 
<option value="">Choose a vessel</option> 
<option value="1744">Stinkpot</option> 
<option value="1726">Poopy Snoop</option> 
<option value="1704">Catchup</option> 

data表示的表。

$('form').delegate('#dockhouse-reservation-vessel','change',function(){ 
    $.ajax({ 
     url: '/dockhouse/ajax/locations-by-reservation-criteria/' + $(this).val() + '/', 
     success: function(data){ 
      $('#assign-location').empty(); 
      $('#assign-location').append(data); 
     } 
    }); 
}); 

任何想法?

+0

什么'数据'看起来像来自服务器?你是否用另一个选择替换了选择? – czarchaic

+0

@czarchaic,我也用新的jQuery更新了我的问题。同样的问题。我现在将'option'元素附加到'select'。 –

+0

@czarchaic,看着它正在创建第二个选择实例的DOM。它压倒了第一个具有正确价值的“真正”的一个。 –

回答

1

当您删除并重新插入整个选择框时,状态将被删除。 你可以在一个临时变量保存旧值,并在回调应用它:

$('form').delegate('#dockhouse-reservation-vessel','change',function(){ 
     // save the value 
     var oldValue = $(this).val(); 
     $.ajax({ 
      url: '/dockhouse/ajax/locations-by-reservation-criteria/' + oldValue + '/', 
      success: function(data){ 
       $('#assign-location').empty(); 
       $('#assign-location').append(data); 
       // select the old value 
       $('#dockhouse-reservation-vessel').val(oldValue); 
      } 
     }); 
    }); 
+0

不幸的是,这并没有奏效。 –

+0

终于找到了一个愚蠢的错误。感谢您的答复! –

0

WOW,愚蠢的错误。有一个与表ajax响应相同名称的选择字段。走在耻辱......

+0

错误让我看错了地方。 –

相关问题