Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajaxedselectform元素默认为第一个选项,即使已更改_Javascript_Jquery_Ajax_Forms - Fatal编程技术网

Javascript ajaxedselectform元素默认为第一个选项,即使已更改

Javascript ajaxedselectform元素默认为第一个选项,即使已更改,javascript,jquery,ajax,forms,Javascript,Jquery,Ajax,Forms,更新:DOM正在创建dockhouse reservation vessel的第二个select实例。它覆盖了第一个,它是具有正确值的真实值 触发事件,检索和替换数据。dockhouse预订船只的值显示在警报中,但不显示在$\ POST中。如果我注释掉jQuery的第二个块,就会正确地记住有问题的select的值 $('form').delegate('#dockhouse-reservation-owner','change', function(){ $.ajax({

更新:DOM正在创建dockhouse reservation vessel的第二个select实例。它覆盖了第一个,它是具有正确值的真实值

触发事件,检索和替换数据。dockhouse预订船只的值显示在警报中,但不显示在$\ 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);
        }
    });
});
数据表示选项元素:

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

有什么想法吗?

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

$('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);
            }
        });
    });

哇,愚蠢的错误。有一个与表ajax响应同名的select字段被拉入。羞愧地走开…

来自服务器的数据看起来像什么?你要用另一个select替换select吗?@Czarchic,我也用新的jQuery更新了我的问题。同样的问题。我现在将选项元素添加到select,查看DOM,它正在创建第二个select实例。它覆盖了第一个字段,它是具有正确值的真实字段。jQuery代码的第二块似乎是基于原始DOM创建字段的新实例。。。?我不明白是什么引起的。
$('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);
            }
        });
    });