我有一个包含注册表单的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但没有任何作用,任何想法?感谢
答案 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 //如果选择器是对多个元素的引用)。