嗨我有一个jquery函数,我想在选择下拉值时触发(不是在点击它时,而不是在它被更改时 - 但是当选择了任何值时)
这是html
<select class="addpropertyinput" name="property_availablefor" id="property_availablefor" required>
<option value="">Available for</option>
<option value="Rent">Rent</option>
<option value="Sale">Sale</option>
</select>
<div class="errormsg" id="errormsg3"></div>
Jquery的
var validate_property_availablefor = function()
{
var item3 = $("#property_availablefor").val();
$("#errormsg14").html("")
$("#errormsg21").html("")
if (item3 == '')
{
$("#errormsg3").html("Please Select Available For")
property_availablefor = "";
}
else
{
$("#errormsg3").html("")
property_availablefor = item3;
}
}
$("#property_availablefor").on('change', validate_property_availablefor);
现在我可以用'click'或'focusout'替换'change',但这并不能完美地解决问题,因为它会在点击或聚焦后立即触发。我需要在下拉列表中选择值时触发它。未更改,不会在单击下拉列表时更改。仅在选择下拉值时。
答案 0 :(得分:1)
<option>
个事件(我只确认它适用于firefox)。保留当前的更改事件,但也添加一个仅在选择为空时响应的单击事件:
var validate_property_availablefor = function()
{
var item3 = $("#property_availablefor").val();
$("#errormsg14").html("")
$("#errormsg21").html("")
if (item3 == '')
{
$("#errormsg3").html("Please Select Available For")
property_availablefor = "";
}
else
{
$("#errormsg3").html("")
property_availablefor = item3;
}
}
$("#property_availablefor").on('change', validate_property_availablefor);
$("#property_availablefor option").on('click', function(event){
var selectedVal = $(this).val();
console.log(selectedVal);
if (selectedVal === '')//only do something when it's blank
{
$("#errormsg3").html("Please Select Available For")
property_availablefor = "";
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="addpropertyinput" name="property_availablefor" id="property_availablefor" required>
<option value="">Available for</option>
<option value="Rent">Rent</option>
<option value="Sale">Sale</option>
</select>
<div class="errormsg" id="errormsg3"></div>