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