如果未定义,则更改值

时间:2012-10-08 10:06:26

标签: javascript jquery

我正在使用此代码段将输入字段转换为reqular text。

$(".supernappula").live('click', function() {
   $('.item-quantity .simpleCart_input').replaceWith(function(){
   return '<span class='+this.className+'>'+this.value+'</span>'
   })    
});

但是,如果该值已从输入更改为span,则会将其转换为undefined并且不应该执行此操作。

我在考虑这样的解决方案:

$(".supernappula").live('click', function() {
    var howmany = $('.item-quantity .simpleCart_input').html();
    if(howmany == "undefined"){return false;}
        $('.item-quantity .simpleCart_input').replaceWith(function(){
        return '<span class='+this.className+'>'+this.value+'</span>'
        });
});

但它实际上并没有做任何事情。所以基本上,如果它已经被转换,我将如何阻止它执行?

2 个答案:

答案 0 :(得分:0)

使用if条件包含替换

$(".supernappula").live('click', function() {
   if( $('.item-quantity .simpleCart_input').length){
      $('.item-quantity .simpleCart_input').replaceWith(function(){
         return '<span class='+this.className+'>'+this.value+'</span>'
      }) 
    }   
});

修改

两个类名都分配给同一个输入..你使用了错误的选择器..

试试这个$('.item-quantity.simpleCart_input')

UPDATED FIDDLE

$('.item-quantity .simpleCart_input')的含义是.simpleCart_input是.item-quantity的孩子,这在您的情况下是错误的。

两个类都与同一个元素相关联。所以你的选择器之间不应该有任何空格..

答案 1 :(得分:0)

你的元素必须至少有一个空格。 所以你可以用这样的东西进行验证:

if($.trim($(".item-quantity .simpleCart_input").html()) == ""){return false;} ...