2017-03-21 110 views
0

我創建了一個標記功能,因此用戶可以通過@標記或#標記進行標記,但問題是通過@標記它工作正常,但通過#標記它沒有得到任何東西我無法找出錯誤,因爲當我的地方console.log below the if(go.length>0) {條件它不給我任何東西,但是當我放在第一個條件以上,如果條件if(go.length>0) {它給我的回報價值我不知道什麼問題是在控制檯我也發現錯誤不能對這個go.length空的讀取屬性「長度」任何一個可以幫助我在這裏是我的代碼無法讀取零的屬性「長度」

$(document).ready(function() { 
 
var start=/@/ig; 
 
var word=/@(\w+)/ig; 
 

 
var co_start=/#/ig; 
 
var co_word=/#(\w+)/ig; 
 

 
$("#contentbox").on("keyup",function() { 
 
    var content = $(this).text(); 
 
    var go  = content.match(start); 
 
    var name = content.match(word); 
 
\t 
 
\t var content1 = $(this).text(); 
 
\t var go_com = content1.match(co_start); 
 
    var co_name = content1.match(co_word); 
 
    var len = $.trim($('#contentbox').text()).length; 
 

 
    if (len >= 200) { 
 
\t \t content.text = content.text.substring(0, 200); 
 
    } else { 
 
\t \t $('#charNum').text(200 - len); 
 
    } 
 

 
    if(go.length>0) { 
 
     $("#display").slideUp('show'); 
 
     if(name.length>0) { 
 
      $.ajax({ 
 
       type  : "POST", 
 
       url  : "http://tfsquare.com/demo/forums/search_user", 
 
       data  : {searchword: name, word: word, command: 'Search User'}, 
 
       cache : false, 
 
       success : function(html) { 
 
        $("#display").html(html).show(); 
 
       } 
 
      }); 
 

 
     } 
 
    } else { 
 
\t \t alert('Helo World'); 
 
\t \t if(go_com.length>0) { 
 
\t \t \t $("#display").slideUp('show'); 
 
\t \t \t if(co_name.length>0) { 
 
\t \t \t \t $.ajax({ 
 
\t \t \t \t \t type  : "POST", 
 
\t \t \t \t \t url  : "http://tfsquare.com/demo/forums/search_tag_company", 
 
\t \t \t \t \t data  : {searchword: co_name, co_word: co_word, command: 'Search Company'}, 
 
\t \t \t \t \t cache : false, 
 
\t \t \t \t \t success : function(html) { 
 
\t \t \t \t \t \t $("#display").html(html).show(); 
 
\t \t \t \t \t } 
 
\t \t \t \t }); 
 

 
\t \t \t } 
 
\t \t } 
 
\t } 
 
\t 
 
    return false(); 
 
}); 
 
});
#contentbox { 
 
    with: 150px; 
 
    height: 150px; 
 
    background-color: #ccc; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="contentbox" contenteditable="true" name="post_dt"> 
 
    <div id="data"> 
 
    </div>

回答

1

null沒有長度。最簡單的方法是檢查這個物體是不是null,然後看看它的值的長度if (not_null && not_null.length)

$(document).ready(function() { 
 

 
    var start = /@/ig; 
 
    var word = /@(\w+)/ig; 
 

 
    var co_start = /#/ig; 
 
    var co_word = /#(\w+)/ig; 
 

 
    var $contentbox = $('#contentbox'), 
 
    $charNum = $('#charNum'), 
 
    $display = $('#display'); 
 

 
    $contentbox.on('keyup', function() { 
 
    var $box = $(this), 
 
     content = $box.text(), 
 
     go = content.match(start), 
 
     name = content.match(word); 
 

 
    var go_com = content.match(co_start), 
 
     co_name = content.match(co_word), 
 
     len = $.trim($contentbox.text()).length; 
 

 
    if (len >= 200) { 
 
     content.text = content.text.substring(0, 200); 
 
    } else { 
 
     $charNum.text(200 - len); 
 
    } 
 

 
    if (go && go.length) { 
 
     $display.slideUp('show'); 
 
     if (name && name.length) { 
 
     $.ajax({ 
 
      type: "POST", 
 
      url: "http://tfsquare.com/demo/forums/search_user", 
 
      data: { 
 
      searchword: name, 
 
      word: word, 
 
      command: 'Search User' 
 
      }, 
 
      cache: false, 
 
      success: function(html) { 
 
      $display.html(html).show(); 
 
      } 
 
     }); 
 
     } 
 
    } else { 
 
     alert('Helo World'); 
 
     if (go_com && go_com.length) { 
 
     $display.slideUp('show'); 
 
     if (co_name && co_name.length) { 
 
      $.ajax({ 
 
      type: "POST", 
 
      url: "http://tfsquare.com/demo/forums/search_tag_company", 
 
      data: { 
 
       searchword: co_name, 
 
       co_word: co_word, 
 
       command: 'Search Company' 
 
      }, 
 
      cache: false, 
 
      success: function(html) { 
 
       $display.html(html).show(); 
 
      } 
 
      }); 
 
     } 
 
     } 
 
    } 
 
    
 
    return false; 
 
    }); 
 

 
});
#contentbox { 
 
    with: 150px; 
 
    height: 150px; 
 
    background-color: #ccc; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id="contentbox" contenteditable="true" name="post_dt"> 
 
    <div id="data"></div> 
 
</div> 
 
<div id="charNum">200</div> 
 

 
<div id="display">Display</div>

+0

謝謝你的代碼確實有效,你可以請給我解釋一下什麼是真正前添加\你我注意到你改變了我的ajax代碼,並且無法識別你是否使用了OOP? –

+0

@MarkAlan不,我只是打了「整潔」按鈕。從'if(go.length> 1)'到'if(go && go.length)'有很大的區別,如果'go'不是null,那麼如果'go'有一個長度,下面的代碼*。除此之外,我只是把東西放在變量中,特別是你不止一次做的事情(例如,'$(this)') – vol7ron

+0

完美的你真的幫了我很多,我躺在編碼的風格,我會讓它練習這個 –

0

我已經修改了你的代碼有點檢查你的價值觀是不是等於null,我真的建議不要使用keyup,因爲它會在每次用戶keyboard發送一個請求,但它給你

$(document).ready(function() { 
 
var start=/@/ig; 
 
var word=/@(\w+)/ig; 
 

 
var co_start=/#/ig; 
 
var co_word=/#(\w+)/ig; 
 

 
$("#contentbox").on("blur",function() { 
 
    var content = $(this).text(); 
 
    // var start=/@/ig; 
 
    var go  = content.match(start); 
 
    var name = content.match(word); 
 
    
 
    var content1 = $(this).text(); 
 
    var go_com = content1.match(co_start); 
 
    var co_name = content1.match(co_word); 
 
    var len = $.trim($('#contentbox').text()).length; 
 

 
    if (len >= 200) { 
 
     content.text = content.text.substring(0, 200); 
 
    } else { 
 
     $('#charNum').text(200 - len); 
 
    } 
 

 
console.log(content.match(start)) 
 

 
    if(go != null && go.length > 0) { 
 
     $("#display").slideUp('show'); 
 
     if(name !=null && name.length>0) { 
 
      $.ajax({ 
 
       type  : "POST", 
 
       url  : "http://tfsquare.com/demo/forums/search_user", 
 
       data  : {searchword: name, word: word, command: 'Search User'}, 
 
       cache : false, 
 
       success : function(html) { 
 
        $("#display").html(html).show(); 
 
       } 
 
      }); 
 

 
     } 
 
    } else { 
 
     alert('Helo World'); 
 
     if(go_com != null && go_com.length>0) { 
 
      $("#display").slideUp('show'); 
 
      if(co_name.length>0) { 
 
       $.ajax({ 
 
        type  : "POST", 
 
        url  : "http://tfsquare.com/demo/forums/search_tag_company", 
 
        data  : {searchword: co_name, co_word: co_word, command: 'Search Company'}, 
 
        cache : false, 
 
        success : function(html) { 
 
         $("#display").html(html).show(); 
 
        } 
 
       }); 
 

 
      } 
 
     } 
 
    } 
 
    
 
    return false; 
 
}); 
 
});
#contentbox { 
 
    with: 150px; 
 
    height: 150px; 
 
    background-color: #ccc; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="contentbox" contenteditable="true" name="post_dt"> 
 
    <div id="data"> 
 
    </div> 
 
    
 
</div>

0

看起來像這是主要問題。你的正則表達式是錯誤的,也是js。

爲了捕捉#,你需要它

Demo here

$(document).ready(function() { 
 
    var start=/@/gim; 
 
    var word=/@(\w+)/gim; 
 
    
 
    var co_start=/\#/gim; 
 
    var co_word=/\#(\w+)/gim; 
 
    
 
    $("#contentbox").on("keyup",function() { 
 
     var content = $(this).text(); 
 
     var go  = content.match(start); 
 
     var name = content.match(word); 
 
    \t 
 
    \t \t var go_com = content.match(co_start); 
 
     var co_name = content.match(co_word); 
 
     var len = $.trim($('#contentbox').text()).length; 
 
    
 
     if (len >= 200) { 
 
    \t \t \t \t $('#charNum').text('0'); 
 
    \t \t \t \t content.text = content.text.substring(0, 200); 
 
     } else { 
 
    \t \t \t \t $('#charNum').text(200 - len); 
 
     } 
 
     
 
     if (go && go.length > 0) { 
 
    \t \t alert('@'); 
 
      $("#display").slideUp('show'); 
 
      if(name.length>0) { 
 
       $.ajax({ 
 
        type  : "POST", 
 
        url  : "http://tfsquare.com/demo/forums/search_user", 
 
        data:{searchword:name,word: word, command: 'Search User'}, 
 
        cache : false, 
 
        success : function(html) { 
 
         $("#display").html(html).show(); 
 
        } 
 
       }); 
 
    
 
      } 
 
     } 
 
//else { 
 
    // \t \t alert('Helo World'); 
 
    \t \t if(go_com && go_com.length>0) { 
 
    \t \t alert('#'); 
 
    \t \t \t $("#display").slideUp('show'); 
 
    \t \t \t if(co_name.length>0) { 
 
    \t \t \t \t $.ajax({ 
 
    \t \t \t \t \t type  : "POST", 
 
    \t \t \t url: "http://tfsquare.com/demo/forums/search_tag_company", 
 
    \t \t \t \t \t data  : {searchword: co_name, co_word: co_word, command: 'Search Company'}, 
 
    \t \t \t \t \t cache : false, 
 
    \t \t \t \t \t success : function(html) { 
 
    \t \t \t \t \t \t $("#display").html(html).show(); 
 
    \t \t \t \t \t } 
 
    \t \t \t \t }); 
 
    
 
    \t \t \t } 
 
    \t \t } 
 
     //alert('action'); 
 
    \t //} 
 
    \t 
 
     return false(); 
 
    }); 
 
    });
#contentbox { 
 
    with: 150px; 
 
    height: 150px; 
 
    background-color: #ccc; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
    <div id="contentbox" contenteditable="true" name="post_dt"> 
 
    <div id="data"> 
 
    </div> 
 
</div> 
 

 
<div id="charNum">200</div> 
 

 
<div id="display">Display</div>

相關問題