页面加载后立即设置select2值

时间:2015-07-30 07:44:14

标签: javascript laravel default jquery-select2

我知道之前曾多次询问过这个问题,但我确实经历了4个小时的解决方案,无法找到针对我的具体问题的解决方案。

我在Laravel刀片编辑视图上有一个select2选择字段,我想将它的值设置为传递给视图的数据。将数据传递给视图已经发生,并且使用选择字段也没有问题,它完全正常。但是我一直在尝试的每一次尝试都未能成功。我一直在用一个按钮来设置选择字段的值,但每次修改

var canInTheHat = {
    someMethod: function() {
        console.log(this); // => catInTheHat

        $.each(['a', 'b'], function() {
            console.log(this); // => iteration 1: 'a', iteration 2: 'b'
        });
    },
    someOtherMethod: function() {
        console.log(this); // => catInTheHat

        $.each(['a', 'b'], function() {
            console.log(this); // => iteration 1: catInTheHat, iteration 2: catInTheHat
        }.bind(this)); // notice the bind
    }
}

未能做到这一点。它总是传输“?id = null”。我很感激有人对此有所启发,因为如果没有这个我就无法继续下去。我在下面添加了重要的代码部分,如果您还需要更多代码,请回复。提前谢谢!

选择HTML:

$("select[name=customer]").val("1");

选择二

<label>*Customer</label>
<select class="form-control" name="customer" id="customer" style="width: 100%">
     <option></option>
</select>

按钮:

$("select[name=customer]").select2({
    allowClear : true,
    placeholder : "Choose customer",
    ajax : {
        url : "/search/autocomplete/get_customers",
        dataType : 'json',
        type : "GET",
        quietMillis : 50,
        delay : 250,
        data : function(params) {
            return {
                filter : params.term
            };
        },
        processResults : function(data) {
            return {
                results : $.map(data, function(item) {
                    return {
                        text : item.name + ' (' + item.customer_code + ')',
                        id : item.id
                    }
                })
            };
        },
        initSelection : function (element, callback) {
              var data = [];
              $(element.val()).each(function () {
                data.push({id: this, text: this});
              });
              callback(data);
        }
    }
});

功能测试():

<button type="button" onclick="test()">Test</button>

我一直在尝试对此进行多项更改,例如:

function test() {        
    $("select[name=customer]").val("1");
};

列表继续。

如果我没有提供重要的内容,请给我留言或重播!

祝你好运

尼克

1 个答案:

答案 0 :(得分:1)

首先,您应该使用<?php echo substr('-1', 0, 1); // will result in "-" ?> 检查选择器是否正确。这次使用单引号作为属性名称。 console.log();

select[name='customer']

如果它传递0,则选择器错误。如果你遇到复杂的css选择器问题,你应该只使用ID。

如果jquery选择器正确但发生错误,则很可能是因为您通过ajax获取值而不等待回调/成功。利用jQuery的ajax成功功能。

 var select = $("select[name='customer']");
 console.log(select.length);

你可以尝试这样的事情。

$.ajax({
    url: '...',
    success: function(response) {
        test();
    }
});