2012-06-14 136 views
21

使用JQuery Mobile我有一个从数据库动态填充的选择框。截至目前,这个复选框的人口完美无缺。我添加了一个功能,它包含一个通过“点击”事件调用功能的按钮。这个函数的作用是知道这个特定的复选框是否已经被填充;如果没有,那么它就不会做任何事情,但否则它会顺利运行。我的问题是确定这个选择框是否为空。如何使用JQuery/Javascript检查选择框是否为空

以下是我处理的非常简单的例子:

<li> 
    <label for="fruit_name">Fruit</label> 
    <select name="some_fruit" id="fruit_name" onclick="populate_box('fruit', this);"> 
    </select> 
</li> 

我的功能,它是由一个单独的按钮叫,看起来是这样的:

function isSelextBoxEmpty(selectBoxId) { 
    var selected_value = $('#fruit_name'); 

    /* More options... still testing the proper way: 
    var selected_value = $('#fruit_name').text; 
    var selected_value = $('#fruit_name').value; 
    var selected_value = $('#fruit_name').length; 
    var selected_value = $('#fruit_name option:selected', this); 
    var selected_value = document.getElementById('fruit_name'); 
    var selected_value = document.getElementById('fruit_name').length; 
    var selected_value = document.getElementById('fruit_name').value; 
    var selected_value = document.getElementById('fruit_name').innerHTML; 
    */ 

    if(selected_value) { 
     alert("NOT null, value: " + selected_value); 
     //do something 
    } 
    else { 
     alert("null, value: " + selected_value); 
     //do something 
    } 
} 

不要担心关于它做了什么以及它是如何做到的。现在对我来说重要的是我不能检查复选框是否为空,我只是不知道该怎么去做。我通过论坛和文档阅读了很多内容,但这样做有很多含义,因为它取决于实施本身。

例如使用document.getElementById(...)...不一定会返回false,这取决于您如何使用它。在jQuery中使用$("#someID")...也可能会产生所需的结果。我已经尝试了许多不同的时间,你可以在注释行中看到,所有这些都可以在if(...)声明中进行评估。

对于如何实现这一点,您有任何建议或想法吗?提前致谢!

回答

53

要检查选择框是否有值:

if($('#fruit_name').has('option').length > 0) { 

检查是否选定值为空:

if(!$('#fruit_name').val()) { 
+1

我把答案给了你,因为你在克劳迪奥之前得到了答案,但实际上克劳迪奥在你做了几秒钟之后也做对了......感谢你们两个!我希望我能分裂奖励。 – AGE

+0

后面的代码不正确。事实上,如果你用一个选择框尝试它,你会收到null作为val(),但@if(!$('#fruit_name').val())@返回TRUE。 – sentenza

+0

嗯,我试图带走我的downvote,因为这是正确的,但stackoverflow不会让我。很蹩脚。对于downvote很抱歉,它应该是upvote。 – gregblass

10

一种正确的方式来获得选择的值将

var selected_value = $('#fruit_name').val() 

然后你应该做的

if(selected_value) { ... } 
2

另一种正确的方式来获得选择的值将通过这个选择:

$("option[value="0"]:selected") 

最适合你的!

相关问题