-2

我有一个包含注册表单的引导模式框。我添加了一些代码,使模式框在按下提交按钮时消失:

$(".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 但没有任何效果的组合,有什么想法吗?谢谢

4

3 回答 3

5

您需要检查值的长度..

但是您正在检查 jQuery 对象是否存在 (如果元素存在或不存在)

应该是

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

$('.signup-phone').length将始终大于一,因为该元素在页面上。所以条件总是为真。

于 2013-07-17T17:27:32.417 回答
1

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

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

应该是 1 的值,因为在类“注册电话”中找到了一个元素。你想要的实际上是元素值的长度:

$('.signup-phone').val().length;
于 2013-07-17T17:34:28.713 回答
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 //如果选择器是对多个元素的引用)。

于 2013-07-17T17:31:38.877 回答