我试图在select中添加一个选项值。我需要输出以大写“K”开头。这是我的jQuery:
$(document).ready(function () {
$(".dialogbox").dialog({
modal: true,
autoOpen: false
});
$(".dropdown").change(function () {
$(".dialogbox").dialog("open");
$(".dialogbox").change("puff");
});
$('select.dropdown').change(function () {
var capacityValue = $('select.dropdown').find(':selected').data('capacity').toUpperCase();
$('.dialogbox').val(capacityValue);
});
});
这是我的fiddle
我试过
$('.dialogbox').val(capacityValue).prepend( 'K' );
但这似乎不起作用。我见过的所有例子都表明这应该有效。在此先感谢您的帮助。
答案 0 :(得分:2)
您的代码存在很多问题:
(1).prepend()
用于将元素作为另一个元素的子元素。您正试图在字符串上调用它。我想你想使用字符串连接:
"K" + $('select.dropdown').find(':selected').data('capacity')
(2)您的html中缺少=
下拉列表的“name”属性:
<select class='dropdown' name='dropdown'>
(3)您有两个带class="dialogbox"
的元素,因此以下内容打开两个对话框:
$(".dialogbox").dialog("open");
您可以使用两个不同的类名,或者在选择器中包含元素类型以区分它们:'div.dialogbox'
&amp; 'input.dialogbox'
(4)您将两个change
事件处理程序附加到下拉列表中。他们的订单无法保证。你应该将它们合二为一。
(5)您应该使用.text()
或.html()
将文字插入元素,而不是.val()
。仅使用.val()
设置输入元素的值。
(6)您可以通过添加show
选项来为打开对话框建立动画效果:
show: 'puff'
或者:
show: { effect: 'puff', duration: 1000 }
尝试以下方法:
$(".dropdown").change(function () {
var capacityValue = "K" + $(this).find(':selected').data('capacity').toUpperCase();
$('div.dialogbox').text(capacityValue).dialog("open");
$('input.dialogbox').val(capacityValue);
});
答案 1 :(得分:0)
.prepend()是预先添加一个dom元素。在你的情况下,只需尝试添加这样的文本,
var capacityValue = "K"+ $('select.dropdown').find(':selected').data('capacity');
更新了fiddle
答案 2 :(得分:0)
我看到你的小提琴,我认为你没有看出前缀的作用。 capacityValue
这只是属性的价值。
.prepend
描述:将参数指定的内容插入匹配元素集中每个元素的开头。
http://api.jquery.com/prepend/
capacityValue
它不是元素,它是对象字符串,而不是更多。
答案 3 :(得分:0)
将代码缩减为一行并更正了! ** 强>
$('select.dropdown').change(function () {
$('.dialogbox').val("k"+$(this).val());
});
你可以轻松实现它而无需前置方法
答案 4 :(得分:0)
我已更新您的小提琴,请检查here。
HTML:
<select class='dropdown' name 'dropdown'>
<option data-selected='opts1' data-capacity='opt1' value='opt1'>Option 1</option>
<option data-selected='opts2' data-capacity='opt2' value='opt2'>Option 2</option>
<option data-selected='opts3' data-capacity='opt3' value='opt3'>Option 3</option>
</select>
<div class='dialogbox' title='Dialogbox'></div>
<input type="text" class="dialogbox" readonly />-->
使用Javascript:
$(document).ready(function () {
$("div.dialogbox").dialog({
modal: true,
autoOpen: false
});
$("input.dialogbox").change(function () {
$("div.dialogbox").dialog("open");
});
$('select.dropdown').change(function () {
var capacityValue = "k".toUpperCase() + $(this).find(':selected').data('capacity');
$('div.dialogbox').text(capacityValue);
$('input.dialogbox').val(capacityValue);
$('input.dialogbox').change();
});
});