更新选择值(如果数据库中存在)

时间:2019-02-18 15:52:15

标签: javascript php jquery joomla

我有一个问题,它没有更新2选择的值。该值为数字代码,字符串存储在数据库中。

这是我的HTML示例:

<select id="jform_country" name="jform[country]" class="form-control required chzn-done">
    <option value="">Select country...</option>
    <option value="1012234" selected="selected">Name country 1</option>
    <option value="1012257">Name country 2</option>
</select>
<select id="jform_city" name="jform[city]" class="form-control required chzn-done">
    <option value="">Select city...</option>
    <option value="1982727" selected="selected">Name city 1</option>
    <option value="1982739">Name city 2</option>
</select>

我使用php(getData)中的函数检索数据库值。但这是我的问题...我试图将变量从PHP传递到JavaScript,它似乎可以正常工作,并且我使用jQuery更改了select的值。但是,刷新页面时,在某些情况下无法正常工作。

这是我在PHP和jQuery中的代码:

$data = $model->getData();
$country = $data->country;
$city = $data->city;
echo '<script>';
echo 'var selectcountry = '. json_encode($country) .';';
echo 'var selectcity = '. json_encode($city) .';';
echo '</script>';

使用jQuery,我可以接收这些变量:

jQuery(document).ready(function () {

        setTimeout(function() {
            rescueValue(selectcountry, selectcity);
        }, 800);

        function rescueValue(selectcountry, selectcity) {

            if (selectcountry != null) {
                jQuery("#jform_country option:contains('"+ selectcountry +"')").attr("selected", "selected");
                jQuery("#jform_country").trigger("liszt:updated");
            }

            if (selectcity != null) {
                jQuery("#jform_city option:contains('"+ selectcity +"')").attr("selected", "selected");
                jQuery("#jform_city").trigger("liszt:updated");
            }
        }

    });

是否可以异步工作?我尝试放入setTimeout,但仍然无法解决。如何使其以简单的方式(类似于此值)恢复PHP值并更新它?谢谢!

1 个答案:

答案 0 :(得分:0)

设置withoutC的值比从列表中找到将其设置为select属性的选项值更正确,例如,如果已经存在另一个具有selected属性的选项。

您可以使用jquery.val直接设置值。

selected