关于选择下拉列表的消息Jquery事件(不下降值的变化)

时间:2017-02-23 03:09:39

标签: javascript jquery html

嗨我有一个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',但这并不能完美地解决问题,因为它会在点击或聚焦后立即触发。我需要在下拉列表中选择值时触发它。未更改,不会在单击下拉列表时更改。仅在选择下拉值时。

1 个答案:

答案 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>