在HTML选择输入中将Google App Engine数据存储区值显示为选定选项

时间:2012-05-22 14:30:44

标签: jquery python google-app-engine

我在Google App Engine数据存储区中存储了一个值,该值是从下拉列表选择控件中选择的。

但每次加载html页面时,都不会显示存储的数据存储区值。相反,它会显示原始下拉列表选择,但未选择任何选项。

HTML:

<select name="items">
  <option>Select</option>
</select>

JavaScript的:

(function($) {
    $.fn.changeType = function() {
        var data = [{"user":"a","name":"Mr A"},
                    {"user":"b","name":"Miss B"},
                    {"user":"c","name":"Mrs C"}];
        var tlist = '<option>Select<\/option>';
        $.each(data, function(i,d){
            tlist += '<option value="' + d.user + '">' + d.name + '<\/option>';
        });
        $("select", this).html(tlist);
    };
})(jQuery);

main.py:

# assume model s
user = db.StringProperty()
...
updated_user = self.request.get('items')
s.user = updated_user
s.put()

请注意,我只将用户(值)部分(例如a)存储在数据存储区中,但我希望将名称部分(例如A先生)。这可能吗?

非常感谢!

更新: 对不起,不清楚。我正在使用jinja2,模板值为p,它来自模型s

<select name="items">
    <option>{{ p.user }}</option>
</select>

并尝试将其放在jQuery中:

var tlist = '<option>{{ p.user }}<\/option>';

但是没有效果(它有点显示用户(值)部分一瞬间)。从本质上讲,我想问一下我在HTML和jQuery中放置Google App Engine数据存储区的价值和位置。感谢。

更新2: 我将JavaScript更改为

(function($) {
    $.fn.changeType = function() {
        var data = [{"user":"a","name":"Mr A"},
                    {"user":"b","name":"Miss B"},
                    {"user":"c","name":"Mrs C"}];
        var tselected = $("select option:selected").val();
        var tlist = '<option>Select<\/option>';
        $.each(data, function(i,d){
    if (d.user === tselected)
                tlist += '<option value="' + d.user + 'selected="selected">' + d.name + '<\/option>';
            else
                tlist += '<option value="' + d.user + '">' + d.name + '<\/option>';
        });
        $("select", this).html(tlist);
    };
})(jQuery);

但是tselected似乎没有返回当前选定的值。有任何想法吗?感谢。

1 个答案:

答案 0 :(得分:0)

使用输入隐藏值解决。