1

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

4

6 回答 6

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

应该检查长度...

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

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

于 2012-08-13T09:02:43.200 回答
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');
        }
于 2012-08-13T09:03:05.180 回答
0

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

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

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

于 2012-08-13T09:05:40.237 回答
0

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

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

将返回“未定义”且不匹配空字符串。

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

这些中的任何一个都应该起作用:

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

或者

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

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

于 2012-08-13T09:05:46.723 回答
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

笔记

!lentrue否则会给。len=0_false

于 2012-08-13T09:06:07.803 回答
0

你可以试试这个

 if( jQuery("*[name='select']") ){
            alert('ok');
        }
于 2012-08-13T09:13:16.327 回答