如何将$(this)
传递给函数。在下面的示例中,我想使用所选下拉选项标签的值填充地址文本框,但前提是所选值不为空。
以下不起作用?
$("#AddressId").change(function () {
$("#Address").val(function(index, val) {
val = $(this).val();
return val === "" ? "" : $('option:selected', this).text();
}, this).trigger("change");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="AddressId">
<option value="">-- Please select --</option>
<option value="1">xyz street</option>
...
</select>
<input id="Address" name="Address" value="" type="text">
答案 0 :(得分:0)
要实现此目的,请在this
事件处理程序的变量中#AddressId
引用change
。然后,您可以在内部val()
函数中使用该变量,如下所示:
$("#AddressId").change(function() {
var $addressId = $(this);
$("#Address").val(function(index, val) {
val = $addressId.val();
return val === "" ? "" : $('option:selected', $addressId).text();
}, this).trigger("change");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="AddressId">
<option value="">-- Please select --</option>
<option value="1">xyz street</option>
</select>
<input id="Address" name="Address" value="" type="text">
虽然请注意,您提供给val()
的功能不是必需的,并且是导致问题的原因。您可以将代码简化为:
$("#AddressId").change(function() {
var address = $(this).val() ? $(this).find('option:selected').text() : '';
$("#Address").val(address).trigger("change");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="AddressId">
<option value="">-- Please select --</option>
<option value="1">xyz street</option>
</select>
<input id="Address" name="Address" value="" type="text">
答案 1 :(得分:0)
我打赌你刚刚过度复杂化了。
$("#AddressId").change(function() {
if ($(this).val()) {
$('#Address').val($(this).find('option:selected').text());
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="AddressId">
<option value="">-- Please select --</option>
<option value="1">xyz street</option>
...
</select>
<input id="Address" name="Address" value="" type="text">
答案 2 :(得分:0)
您只需添加条件selected_value != ""
,然后分配所选值(如果不为空):
$("#AddressId").change(function () {
var selected_value = $(this).val();
if( selected_value != ""){
$("#Address").val( selected_value );
}
});
希望这有帮助。
$("#AddressId").change(function () {
var selected_value = $(this).val();
if( selected_value != ""){
$("#Address").val( selected_value );
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="AddressId">
<option value="">-- Please select --</option>
<option value="1">xyz street</option>
<option value="2">abc street</option>
<option value="3">def street</option>
</select>
<input id="Address" name="Address" value="" type="text">