0

我正在使用此代码段将输入字段转换为常规文本。

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

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

4

2 回答 2

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')

更新的小提琴

$('.item-quantity .simpleCart_input')意味着 .simpleCart_input 是一个孩子,.item-quantity在你的情况下是错误的..

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

于 2012-10-08T10:09:05.247 回答
0

您的元素内部必须至少有一个空格。因此,您可以使用以下方式进行验证:

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

于 2012-10-08T10:20:27.433 回答