如何通过jquery将选择框的值更改为最后一个选项

Vel*_*n S 6 html forms jquery

我有一个选择框,其中的选项及其值将从PHP数据库中获取.最后一个选项是"新地址".

HTML

<select name="shipping_address_id" id="shipping_customer_address" class="customer_address" title="" onchange="shipping.newAddress(!this.value)">
     <option value="48" selected="selected">p p, yui, cfg,  90602-1234, U.S. Minor Outlying Islands</option>
     <option value="52" selected="selected">e B, ewri, csdfwefg,  90602-1234, U.S. Minor Outlying Islands</option>
     <option value="">New Address</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我需要的

function showForm(){
 jQuery("#shipping_customer_address").val("New Address"); //Not working
}
Run Code Online (Sandbox Code Playgroud)

这个show showForm()函数应该将我的select值改为"New Address".怎么做.

Dav*_*mas 25

我建议:

$('#shipping_customer_address option:last').prop('selected', true);
Run Code Online (Sandbox Code Playgroud)

$('#shipping_customer_address option:last').prop('selected', true);
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="shipping_address_id" id="shipping_customer_address" class="customer_address" title="" onchange="shipping.newAddress(!this.value)">
  <option value="48" selected="selected">p p, yui, cfg, 90602-1234, U.S. Minor Outlying Islands</option>
  <option value="52" selected="selected">e B, ewri, csdfwefg, 90602-1234, U.S. Minor Outlying Islands</option>
  <option value="">New Address</option>
</select>
Run Code Online (Sandbox Code Playgroud)

外部JS小提琴演示.

或者(快一点):

$('#shipping_customer_address option').last().prop('selected',true);
Run Code Online (Sandbox Code Playgroud)

$('#shipping_customer_address option').last().prop('selected',true);
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="shipping_address_id" id="shipping_customer_address" class="customer_address" title="" onchange="shipping.newAddress(!this.value)">
  <option value="48" selected="selected">p p, yui, cfg, 90602-1234, U.S. Minor Outlying Islands</option>
  <option value="52" selected="selected">e B, ewri, csdfwefg, 90602-1234, U.S. Minor Outlying Islands</option>
  <option value="">New Address</option>
</select>
Run Code Online (Sandbox Code Playgroud)

外部JS小提琴演示.

您可以valueNew Address选项中删除该属性,并通过缺少该属性进行选择:

$('#shipping_customer_address option').not('[value]').prop('selected',true);
Run Code Online (Sandbox Code Playgroud)

$('#shipping_customer_address option').not('[value]').prop('selected',true);
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="shipping_address_id" id="shipping_customer_address" class="customer_address" title="" onchange="shipping.newAddress(!this.value)">
  <option value="48" selected="selected">p p, yui, cfg, 90602-1234, U.S. Minor Outlying Islands</option>
  <option value="52" selected="selected">e B, ewri, csdfwefg, 90602-1234, U.S. Minor Outlying Islands</option>
  <option>New Address</option>
</select>
Run Code Online (Sandbox Code Playgroud)

外部JS小提琴演示.

甚至可以选择属性:

$('#shipping_customer_address option[value=""]').prop('selected',true);
Run Code Online (Sandbox Code Playgroud)

$('#shipping_customer_address option[value=""]').prop('selected',true);
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="shipping_address_id" id="shipping_customer_address" class="customer_address" title="" onchange="shipping.newAddress(!this.value)">
  <option value="48" selected="selected">p p, yui, cfg, 90602-1234, U.S. Minor Outlying Islands</option>
  <option value="52" selected="selected">e B, ewri, csdfwefg, 90602-1234, U.S. Minor Outlying Islands</option>
  <option value="">New Address</option>
</select>
Run Code Online (Sandbox Code Playgroud)

外部JS小提琴演示.

或者,在纯JavaScript中,选择最后一个<option>:

document.getElementById('shipping_customer_address').lastElementChild.selected = true;
Run Code Online (Sandbox Code Playgroud)

document.getElementById('shipping_customer_address').lastElementChild.selected = true;
Run Code Online (Sandbox Code Playgroud)
<select name="shipping_address_id" id="shipping_customer_address" class="customer_address" title="" onchange="shipping.newAddress(!this.value)">
  <option value="48" selected="selected">p p, yui, cfg, 90602-1234, U.S. Minor Outlying Islands</option>
  <option value="52" selected="selected">e B, ewri, csdfwefg, 90602-1234, U.S. Minor Outlying Islands</option>
  <option value="">New Address</option>
</select>
Run Code Online (Sandbox Code Playgroud)

外部JS小提琴演示.

或者,<option>使用CSS选择器选择最后一个document.querySelector():

document.querySelector('#shipping_customer_address option:last-child').selected = true;
Run Code Online (Sandbox Code Playgroud)

document.querySelector('#shipping_customer_address option:last-child').selected = true;
Run Code Online (Sandbox Code Playgroud)
<select name="shipping_address_id" id="shipping_customer_address" class="customer_address" title="" onchange="shipping.newAddress(!this.value)">
  <option value="48" selected="selected">p p, yui, cfg, 90602-1234, U.S. Minor Outlying Islands</option>
  <option value="52" selected="selected">e B, ewri, csdfwefg, 90602-1234, U.S. Minor Outlying Islands</option>
  <option value="">New Address</option>
</select>
Run Code Online (Sandbox Code Playgroud)

外部JS小提琴演示.

或者,对于那些无法识别的浏览器lastElementChild:

var options = document.getElementById('shipping_customer_address').options;

options[options.length - 1].selected = true;
Run Code Online (Sandbox Code Playgroud)

var options = document.getElementById('shipping_customer_address').options;

options[options.length - 1].selected = true;
Run Code Online (Sandbox Code Playgroud)
<select name="shipping_address_id" id="shipping_customer_address" class="customer_address" title="" onchange="shipping.newAddress(!this.value)">
  <option value="48" selected="selected">p p, yui, cfg, 90602-1234, U.S. Minor Outlying Islands</option>
  <option value="52" selected="selected">e B, ewri, csdfwefg, 90602-1234, U.S. Minor Outlying Islands</option>
  <option value="">New Address</option>
</select>
Run Code Online (Sandbox Code Playgroud)

外部JS小提琴演示.

要使用以下选项选择具有空value属性/属性的选项document.querySelector():

document.querySelector('#shipping_customer_address option[value=""]').selected = true;
Run Code Online (Sandbox Code Playgroud)

document.querySelector('#shipping_customer_address option[value=""]').selected = true;
Run Code Online (Sandbox Code Playgroud)
<select name="shipping_address_id" id="shipping_customer_address" class="customer_address" title="" onchange="shipping.newAddress(!this.value)">
  <option value="48" selected="selected">p p, yui, cfg, 90602-1234, U.S. Minor Outlying Islands</option>
  <option value="52" selected="selected">e B, ewri, csdfwefg, 90602-1234, U.S. Minor Outlying Islands</option>
  <option value="">New Address</option>
</select>
Run Code Online (Sandbox Code Playgroud)

外部JS小提琴演示.

参考文献: