如果else语句没有效果 - javascript

时间:2013-07-17 17:25:51

标签: javascript jquery twitter-bootstrap if-statement bootstrap-modal

我有一个包含注册表单的bootstrap模式框。我添加了一些代码,当按下提交按钮时,模态框会消失:

$(".dismiss-signup-modal").click(function () {
    jQuery('#signup_modal').modal('hide'); }
});

这很好但我想让模态框留在原处,如果注册表单的电话号码字段是空白的,只有当电话号码字段有值时才会消失,如下所示:

$(".dismiss-signup-modal").click(function () {

    if ($('.signup-phone').length > 0) {

    jQuery('#signup_modal').modal('hide'); }

    else {}
});

但是上面的代码没有做任何事情,如果电话号码字段留空,模态框仍然会消失。我已经尝试过我能想到的所有组合将if else语句放在函数外部或者创建一个新函数或者将.signup-phone变成var但没有任何作用,任何想法?感谢

3 个答案:

答案 0 :(得分:5)

您需要检查值的长度 ..

但是你检查是否存在jQuery对象                    (如果元素存在与否)

原来是

   if( $('.signup-phone').val().length > 0 ) {

$('.signup-phone').length将始终大于1,因为该元素是pressnton页面。所以条件总是如此。

答案 1 :(得分:1)

JQuery对象的长度与DOM元素的长度不同。 JQuery.length为您提供包含的元素数,而不是输入元素值的长度。所以:

$('.signup-phone').length;

的值应为1,因为在“signup-phone”类中找到了单个元素。你想要的实际上是元素值的长度:

$('.signup-phone').val().length;

答案 2 :(得分:0)

我认为$('.signup-phone').length指的是元素的长度而不是它的长度。

也许你可以试试这个:

$(".dismiss-signup-modal").click(function () {

    if ($('.signup-phone').text.length > 0) {
    // or you could use 
    //if ($('.signup-phone').value.length > 0) {
    jQuery('#signup_modal').modal('hide'); }

    else {}
});

编辑:按元素我的意思是JQuery元素(s //如果选择器是对多个元素的引用)。