2016-06-13 4 views
0

こんにちは私は文字列に最初の文字が存在しない場合、search()がJavaScriptで動作しないことを知っています(-1)。search()最初の文字が文字列にない場合はjavacriptが機能しません

$('#search-vulc').on('keyup', function() { 
    var textinsert = ($(this).val()).toLowerCase(); 
    var nome_search = "home"; 

    if (nome_search.search(textinsert) != -1) { 
     alert('ok'); 
    } 
    else { 
     alert('not'); 
    } 
}); 

この例では、 "x home"と書いた場合は-1を返します。

しかし、この問題を「解決する」方法はありますか?私はこの場合には戻らない方法をご希望の短期で 、私は「Xホーム」を書いた場合、とにかく単語ホームがある...

-1

+0

「textinsert.search(nome_search)」という件名とオブジェクトを交換したいようです。それを試しましたか? – trincot

+1

誰かが 'x home'を書いていたら' x'を無視したいのですか?あるいは 'x'と' home'を別々に検索しますか? – Simba

+0

は私にとっては-1を返す必要はありません。ホームの単語がある場合は...私のためには、単語の家の前に "x"または別の文字がある場合は重要ではありません – Borja

答えて

1

あなたは"home"で "x home"を検索しています。 したがって-1を返しています。

if (nome_search.search(textinsert) != -1) 

if (textinsert.search(nome_search) != -1) 
1

であるべきでは単に後方nome_search.search(textinsert)このですか? textinsert.search(nome_search)

リファクタリングコード:

function getStringPostion(re, str) { 
    var midstring; 
    var position = str.search(re); 
    midstring=(position != -1) ? ' contains ':' does not contain '; 
    console.log(str + midstring + re); 
    console.log(position); 
    return position; 
} 
var foundAtPosition = getStringPostion("home","x home"); 
-1

反復処理は、全ての挿入文字列が行う可能性があります谷:

var f = function(re) { 
    var textinsert = ($(this).val()).toLowerCase().split(" "); 

    var nome_search = "home"; 
    var result = 0; 
    for (var i = 0; i<textinsert.length; i++){ 
    console.log(textinsert[i]); 
    if (nome_search.search(textinsert[i]) != -1) result++; 
    } 
    return result > 0 ? alert('ok') : alert('not') ; 
}; 

を限り、彼らはあなたの例のようにスペースで区切られているよう。

関連する問題