我有一个选择字段,其中有一些选项。现在我需要用jQuery选择其中一个选项。但是,当我只知道必须选择的选项的值时,我该怎么做呢?
我有以下HTML:
<div class="id_100">
<select>
<option value="val1">Val 1</option>
<option value="val2">Val 2</option>
<option value="val3">Val 3</option>
</select>
</div>
我需要选择值为val2的选项。如何做到这一点呢?
这是一个演示页面:
http://jsfiddle.net/9Stxb/
我已经准备了一个小的JQuery扩展,删除所有不必要的选项和隐藏所选的选项,用户只看到一个值在选择字段
$.prototype.makeReadOnly = function (canClick = false) {
$(this).each(function () {
$(this).readonly = true;
if ($(this).is("select")) {
if(!canClick) $(this).mousedown(function () { event.preventDefault(); }).keydown(function () { event.preventDefault(); });
$(this).find('option:not(:selected)').remove();
$(this).find('option').hide();
}
});
}
然后你可以让所有的选择都是只读的
$("select").makeReadOnly();
或者只选择特定的只读类
$("select.read-only").makeReadOnly();
我需要选择一个选项,但两个选项可能具有相同的值。
这纯粹是为了视觉(前端)的差异。
你可以选择一个选项(即使两个值相同),如下所示:
let options = $('#id_100 option')
options.prop('selected', false) // Deselect all currently selected ones
let option = $(options[0]) // Select option from the list
option.prop('selected', true)
option.parent().change() // Find the <select> element and call the change() event.
这将取消当前选中的所有<option>元素。选择第一个元素(使用选项[0]),并使用change事件更新<select>元素。
Use:
$("div.id_100 > select > option[value=" + value + "]").attr("selected",true);
这对我很有用。我使用这段代码来解析一个fancybox更新表单中的值,我的完整源代码来自app.js:
jQuery(".fancybox-btn-upd").click(function(){
var ebid = jQuery(this).val();
jQuery.ajax({
type: "POST",
url: js_base_url+"manajemen_cms/get_ebook_data",
data: {ebookid:ebid},
success: function(transport){
var re = jQuery.parseJSON(transport);
jQuery("#upd-kategori option[value="+re['kategori']+"]").attr('selected',true);
document.getElementById("upd-nama").setAttribute('value',re['judul']);
document.getElementById("upd-penerbit").setAttribute('value',re['penerbit']);
document.getElementById("upd-tahun").setAttribute('value',re['terbit']);
document.getElementById("upd-halaman").setAttribute('value',re['halaman']);
document.getElementById("upd-bahasa").setAttribute('value',re['bahasa']);
var content = jQuery("#fancybox-form-upd").html();
jQuery.fancybox({
type: 'ajax',
prevEffect: 'none',
nextEffect: 'none',
closeBtn: true,
content: content,
helpers: {
title: {
type: 'inside'
}
}
});
}
});
});
我的PHP代码是:
function get_ebook_data()
{
$ebkid = $this->input->post('ebookid');
$rs = $this->mod_manajemen->get_ebook_detail($ebkid);
$hasil['id'] = $ebkid;
foreach ($rs as $row) {
$hasil['judul'] = $row->ebook_judul;
$hasil['kategori'] = $row->ebook_cat_id;
$hasil['penerbit'] = $row->ebook_penerbit;
$hasil['terbit'] = $row->ebook_terbit;
$hasil['halaman'] = $row->ebook_halaman;
$hasil['bahasa'] = $row->ebook_bahasa;
$hasil['format'] = $row->ebook_format;
}
$this->output->set_output(json_encode($hasil));
}