j查询检查 remove() 后是否存在输入

jQuery check for existence of input after remove()

本文关键字:是否 存在 输入 查询 检查 remove      更新时间:2023-09-26

我有一个表单,用户应该选择预定义的数据,在名为xxx的输入字段中添加新数据,然后他/她可以继续。

选择预定义数据后,将创建新的隐藏输入

$('.selectlists').append('<input type="hidden" name="select" value="1" />')

我有一个函数可以检查隐藏字段是否存在以及输入xxx是否有任何值

function checkAll(){
        if( $("input[name*='select']") ){
            alert('ok');
        }
        else{
            if ( $("input[name*='xxx']").val() != '') {
                alert('ok');
            }
        }
    }

该功能工作正常。但是,如果我创建隐藏的输入,然后使用 jQuery 的函数 remove() 将其删除,我的函数checkAll()显示隐藏输入仍然存在。

if($("input[name*='select']")) ...

应该检查长度...

if( $("input[name*='select']").length > 0) 

JQuery 返回一个匹配元素的数组。

你创建这样的输入

$('.selectlists').append('<input type="hidden" name="select" value="1" />') .

右?

$('.selectlists input[name="select"]').remove();

尝试checkAll方法:

if( $(".selectlists input[name='select']") ){
            alert('ok');
        }

if( $(".selectlists input[name='select']").length ){
            alert('ok');
        }

使用 length 属性来测试某个元素是否存在,因为函数$()返回一个对象数组,并且在 JavaScript 中,所有数组的计算结果都为 true,即使它们是空的,情况就是如此。

if( $("input[name*='select']").length ){
     alert('ok');
}

这样,如果没有input[name*='select']则长度将为零,表达式的计算结果将为 false。

当输入字段不存在时,您的检查将显示一个带有"确定"的警告框,因为

$("input[name*='xxx']").val()

将返回"未定义"并且不匹配空字符串。

您可以通过检查 jQuery 对象是否返回任何命中或检查"未定义"来检查元素是否存在

以下任一方法都有效:

typeof $('input[name=xxx]').val() === 'undefined'

$('input[name=xxx]').length === 0

我更喜欢选项 2,因为它似乎对 jQuery 中的更改更健壮。

你可以试试这个

 if( jQuery("*[name='select']") ){
            alert('ok');
        }
function isexists(){
   var hiddenLen = $(".selectlists input[name*='select']:hidden").length,
       hasval = $.trim( $("input[name*='xxx']").val() ).length;
   return {
      hiddedexists: !len,
      hasval : !hasval
    };
}

您可以像这样使用此函数:

var exists = isexists();
exists.hiddenexists; // true of false
exists.hasval;  // true of false

注意

如果len=0其他false!len会给true.