我有一个带有值的简单下拉列表。在更改时,该值将传递给变量realm.write() {
realm.add(whatever)
}
将place
值传递给div,div从api加载数据。选择其中一个值后,它会产生罚款,但我的初始值为空。
如何在单击选择列表之前存储默认值?
place
答案 0 :(得分:3)
您可以通过向其添加selected
布尔属性来将选项设置为默认选项,但我的猜测是您真正的问题是如何在开始时触发加载信息。
添加selected
(虽然它很可能已经默认为第一个):
<select name="places">
<option value="135264023" selected>New York</option><!-- Note change -->
<option value="116721348">Los Angeles</option>
<option value="104279908">Dubai</option>
</select>
...然后在你的脚本中:
var sel = $("select"); // You probably want this to be more specific
setupPlace(sel.val());
sel.change(function() {
setupPlace($(this).val());
});
function setupPlace(place) {
console.log(place);
// This call have to happen after div and <script> tag.
widgetOptions({
element: 'widget',
placeId: place,
});
}
注意我们如何将逻辑隔离到一个函数中,然后我们从我们需要它的两个地方调用该函数:初始化和更改。
或者,您会看到人们在做这种事情(仍然使用selected
属性):
$('select').change(function() {
var place = $(this).val();
console.log(place);
// This call have to happen after div and <script> tag.
widgetOptions({
element: 'widget',
placeId: place,
});
}).trigger("change"); // <== Only change is here
我不喜欢使用虚假事件来触发处理程序,但我可以看到它的吸引力。它主要是一种风格选择。
答案 1 :(得分:-1)
var place = null;
$('select').click(function() {
if(place === null) {
place = $(this).val();
}
});
$('select').change(function() {
//place = $(this).val();
console.log(place);
// This call have to happen after div and <script> tag.
widgetOptions({
element: 'widget',
placeId: place,
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="places">
<option value="135264023">New York</option>
<option value="116721348">Los Angeles</option>
<option value="104279908">Dubai</option>
</select>
<div id="widget"></div>
&#13;