[英]jQuery onChange in a dropdown
我试图获得一个下拉列表,以根据option属性更改输入的值,但是它始终将undefined用作值。
<select class="form-control" name="ph1_plantype" onChange="document.getElementById('ph1_price').value=$(this).attr('data-price');">
<option data-price="Arron is shit">Plan Type</option>
<option data-price="1955">Topaz</option>
<option data-price="2945">Pearl</option>
<option data-price="3195">Sapphire</option>
<option data-price="3595">Ruby</option>
<option data-price="1695">Cremation Direct</option>
<option>Emerald</option>
<option>Other</option>
</select><br />
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-gbp"></i></span>
<input type="text" id="ph1_price" name="ph1_price" class="form-control" placeholder="Plan Price (excl interest)" >
</div>
使用内联处理程序被认为是不好的做法。 使用jQuery的change
或on('change'
来绑定元素上的change事件。
$('.form-control').change(function () {
var price = $(this).find(':selected').attr('data-price');
$('#ph1_price').val(price);
});
通过使用data()
获取元素上的data-*
$('select.form-control').change(function () {
$('#ph1_price').val($(this).find(':selected').data('price'));
});
现场演示
$('select.form-control').change(function() { $('#ph1_price').val($(this).find(':selected').data('price') || 'No price available'); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select class="form-control" name="ph1_plantype"> <option data-price="Arron is shit">Plan Type</option> <option data-price="1955">Topaz</option> <option data-price="2945">Pearl</option> <option data-price="3195">Sapphire</option> <option data-price="3595">Ruby</option> <option data-price="1695">Cremation Direct</option> <option>Emerald</option> <option>Other</option> </select> <br /> <div class="form-group input-group"> <span class="input-group-addon"><i class="fa fa-gbp"></i></span> <input type="text" id="ph1_price" name="ph1_price" class="form-control" placeholder="Plan Price (excl interest)"> </div>
尝试这个。 您不是从选定的选项中获取数据价格 ,而是在使用$(this)时直接从select中获取数据价格 。
<select class="form-control" name="ph1_plantype" onChange="$('#ph1_price').val($(this).find(':selected').data('price'));">
<option data-price="Arron is shit">Plan Type</option>
<option data-price="1955">Topaz</option>
<option data-price="2945">Pearl</option>
<option data-price="3195">Sapphire</option>
<option data-price="3595">Ruby</option>
<option data-price="1695">Cremation Direct</option>
<option>Emerald</option>
<option>Other</option>
</select><br />
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-gbp"></i></span>
<input type="text" id="ph1_price" name="ph1_price" class="form-control" placeholder="Plan Price (excl interest)" value="" />
</div>
附带说明一下,最好不要使用内联处理程序。 最好使用这个:
$('.form-control').change(function () {
$('#ph1_price').val($(this).find(':selected').data('price'));
});
当您引用$(this)
您引用的是下拉菜单本身,因此是未定义的数据价格。 您想再遍历一下菜单来查找选定的选项。
$(this).find(':selected').attr('data-price')
我将其放在这里: http : //jsfiddle.net/wvsLcqop/3/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.