Javascript和JQuery,如何验证select中是否存在选项元素?

时间:2012-03-14 08:12:55

标签: jquery select

使用JQuery,我尝试在选择'中选择一个选项。基于查询字符串的元素。

这个问题类似于this,但是我仍然需要知道如何在执行选择之前检查元素是否存在,否则页面将自动刷新(请参阅下面的退出条件)。

使用函数getParameterByName获取查询字符串,并且它正常工作。

目前的实施如下:

function setSelectedItem(selectName, itemToSelect) {
    ///<summary>Selects an HTML option element inside a HTML select element based on the value from the query string.</summary>
    ///<param name="selectName" type="string">The partial name of the HTML select in which 'itemToSelect' must be selected</param>
    ///<param name="itemToSelect" type="string">The name of the query string parameter which value is the of the 'option' element to select.</param>

    //If an items has already been selected, return
    if ($('select[name*=' + selectName + ']')[0].selectedIndex != 0) return;


    //Fetches the value from the query string; if empty, returns
    var valueToSelect = getParameterByName(itemToSelect);
    if (valueToSelect == "") return;

    //Fecthes the HTML select object
    var selectObject = $('select[name*=' + selectName + ']');

    //HERE how to check if 'valueToSelect' does not exist and return?

    selectObject.val(valueToSelect).attr('selected', 'selected').change();
}

更新:有效的解决方案是:

    //Checks if the option exists, and returns otherwise
    if (!selectObject.find('option[value=' + valueToSelect + ']').length)
        return;

3 个答案:

答案 0 :(得分:18)

尝试检查selectObject.find('option[value="'+valueToSelect +'"]').length > 0

答案 1 :(得分:2)

检查选择器的长度:

var selectObject = $('select[name*=' + selectName + ']');
if (selectObject.length == 0)
    return;
selectObject.val(valueToSelect).attr('selected', 'selected').change();

或者在javascript中使用隐式布尔转换:

var selectObject = $('select[name*=' + selectName + ']');
if (!selectObject.length)
    return;

selectObject.val(valueToSelect).attr('selected', 'selected').change();

答案 2 :(得分:0)

您可以使用.length>0检查元素是否存在。但是如果你一遍又一遍地运行这个代码就会有点讨厌,所以我写了一个小插件来确保这种功能:

/* doesExist PLUGIN (c) MS */
/* (c) Michael Stadler(MS), */
(function($){
$.fn.doesExist = function()
{
return jQuery(this).length > 0;
};
})(jQuery);

<强>用法:

$('#myDiv').doesExist() // returns a boolean