-2

我有一个引导模态框,其中包含注册表单。我已经添加了一些代码,使得当按下提交按钮的模式对话框消失:如果else语句没有效果 - javascript

$(".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,但没有任何作用,任何想法?感谢

回答

5

您需要检查值的长度..

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

应该是

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

$('.signup-phone').length将总是大于一,因为该元素是pressnton这一页。所以情况总是如此。

+1

此。顺便说一句,解释为什么$('。signup-phone').length> 0'是错误的:检查一个$(selector)的.length与*“这个选择器是否存在?”*相同。因此你需要用'val()'来获取选择器9的值,以查看是否写了一些东西。 – RaphaelDDL

+0

一个更好的方式来说明,选择器匹配的元素数等于jQuery对象的长度。通过检查它是否大于零,它就成为存在检查。 –

+0

这样做,非常感谢您的帮助 – railsy

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的元素(//如果选择是多个元素的引用)。

+0

这是什么意思,“元素的长度”?更准确的说法是,jQuery对象的长度等于它当前匹配的元素的数量。 –

+0

抱歉误会英语是我的外语,我无法找到更好的词来描述JQuery元素。 – Sebastien

1

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

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

应该是1的值,因为在类'signup-phone'中找到了单个元素。你想要什么是真正的元素值,而不是长度:

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

你确定re:length是jQuery对象的一个​​函数吗?可能想重新阅读文档。 –

+0

我的不好,你是对的,我已经解决了我的答案。 – Lochemage