2017-02-23 102 views
0

嗨我有一个jquery函数,当我想要点击下拉值时(不是当它被点击时,而不是当它改变 - 但任何时候值选择)关于下拉列表的选择的火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); 

现在我可以替换 '点击' 或 '事件的内容',但不解决问题PE '变'完美无缺,因为一旦它被点击或聚焦,它就会发射。我需要在下拉菜单中选择值时触发它。没有改变,而不是当点击下拉时。仅当选择了下拉值时。

+0

知道,被选择的值,并将其值之间的差异而改变?这似乎是同样的事情。 – JakeParis

+0

第一个值为空白,因此如果用户选择空白,则应显示错误消息,但如果值未更改,则不显示错误消息,如果单击时显示错误消息,则错误消息闪烁,如果焦点显示那么它有点迟了。 – DragonFire

+0

您需要在选择框的“更改”事件上挂钩您的自定义功能。然后检查这个值,如果它是空白的,显示你的错误。 – JakeParis

回答

1

<option>事件不支持所有浏览器(我只确认它可以在Firefox上使用)。让您的电流变化时,也可加一个只响应当选择为空click事件:

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>