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

时间:2012-08-13 08:58:13

标签: javascript jquery input

我有一个表单,用户应该选择预定义数据在名为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()显示隐藏的输入仍然存在。

6 个答案:

答案 0 :(得分:3)

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

应检查长度...

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

JQuery返回一组匹配元素。

答案 1 :(得分:1)

你创建像

这样的输入

$('.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');
        }

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

当输入字段不存在时,您的支票将显示一个带有'ok'的提醒框,因为

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

将返回'undefined'并且不匹配空字符串。

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

其中任何一个都应该有效:

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

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

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

答案 4 :(得分:0)

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如果true其他len=0,则会false。{/ p>

答案 5 :(得分:0)

你可以试试这个

 if( jQuery("*[name='select']") ){
            alert('ok');
        }