更改功能前的默认值

时间:2015-09-18 11:55:32

标签: javascript jquery

我有一个带有值的简单下拉列表。在更改时,该值将传递给变量realm.write() { realm.add(whatever) }

place值传递给div,div从api加载数据。选择其中一个值后,它会产生罚款,但我的初始值为空。

如何在单击选择列表之前存储默认值?

place

2 个答案:

答案 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)

&#13;
&#13;
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;
&#13;
&#13;