JQueryを使用して、長いテキスト文字列(クエリ文字列など)を取得して最大10文字を表示するにはどうすればよいですか?
申し訳ありませんが、私はJavaScriptとJQueryの初心者です:S
どんな助けでも大歓迎です。
JQueryを使用して、長いテキスト文字列(クエリ文字列など)を取得して最大10文字を表示するにはどうすればよいですか?
申し訳ありませんが、私はJavaScriptとJQueryの初心者です:S
どんな助けでも大歓迎です。
回答:
私が正しく理解していれば、文字列を10文字に制限したいですか?
var str = 'Some very long string';
if(str.length > 10) str = str.substring(0,10);
そんな感じ?
そして、これがjQueryの例です。
HTMLテキストフィールド:
<input type="text" id="myTextfield" />
サイズを制限するjQueryコード:
var elem = $("#myTextfield");
if(elem) elem.val(elem.val().substr(0,10));
例として、上記のjQueryコードを使用して、ユーザーが入力中に10文字を超える文字を入力できないように制限できます。次のコードスニペットはまさにこれを行います。
$(document).ready(function() {
var elem = $("#myTextfield");
if (elem) {
elem.keydown(function() {
if (elem.val().length > 10)
elem.val(elem.val().substr(0, 10));
});
}
});
更新:上記のコードスニペットは、使用例を示すためにのみ使用されました。
次のコードスニペットは、DIV要素の問題を処理します。
$(document).ready(function() {
var elem = $(".tasks-overflow");
if(elem){
if (elem.text().length > 10)
elem.text(elem.text().substr(0,10))
}
});
このメソッドはDIV要素では機能しないようであるため、この場合のtext
代わりにを使用していることに注意してください。val
val
val
メソッドが含まれていましたが、これはDIV要素では機能しないようです。回答を再度更新しました。このtext
メソッドを使用してテキストを変更しました。これは完全に機能するはずです(ローカルで再度テストしました)。更新したコードでもう一度テストして、教えていただけますか?
分割が発生しなかった可能性があると誰も考えていないため、独自の回答を作成します(短いテキスト)。その場合、接尾辞として「...」を追加したくありません。
三項演算子はそれを整理します:
var text = "blahalhahkanhklanlkanhlanlanhak";
var count = 35;
var result = text.slice(0, count) + (text.length > count ? "..." : "");
機能するように閉じることができます:
function fn(text, count){
return text.slice(0, count) + (text.length > count ? "..." : "");
}
console.log(fn("aognaglkanglnagln", 10));
ヘルパークラスに展開して、ドットが必要かどうかを選択することもできます。
function fn(text, count, insertDots){
return text.slice(0, count) + (((text.length > count) && insertDots) ? "..." : "");
}
console.log(fn("aognaglkanglnagln", 10, true));
console.log(fn("aognaglkanglnagln", 10, false));
html
<p id='longText'>Some very very very very very very very very very very very long string</p>
javascript(ドキュメント対応)
var longText = $('#longText');
longText.text(longText.text().substr(0, 10));
テキストに複数の単語があり、それぞれを最大10文字に制限したい場合は、次のようにすることができます。
var longText = $('#longText');
var text = longText.text();
var regex = /\w{11}\w*/, match;
while(match = regex.exec(text)) {
text = text.replace(match[0], match[0].substr(0, 10));
}
longText.text(text);
これはあなたがおそらく望むもののように私にはもっと見えます。
$(document).ready(function(){
var stringWithShorterURLs = getReplacementString($(".tasks-overflow").text());
function getReplacementString(str){
return str.replace(/(https?\:\/\/[^\s]*)/gi,function(match){
return match.substring(0,10) + "..."
});
}});
最初の行にhtml要素を指定すると、テキスト全体が取得され、URLが10文字の長さのバージョンに置き換えられて返されます。これは、URL文字が3つしかないので少し奇妙に思えるので、可能であればこれをお勧めします。
$(document).ready(function(){
var stringWithShorterURLs = getReplacementString($(".tasks-overflow p").text());
function getReplacementString(str){
return str.replace(/https?\:\/\/([^\s]*)/gi,function(match){
return match.substring(0,10) + "..."
});
}});
これはhttp://またはhttps://を取り除いて、www.example.comの最大10文字を印刷します。
@ jolly.exe
良い例ジョリー。単語数ではなく文字長を制限するバージョンを更新しました。また、タイトルを実際の元のinnerHTMLに設定して、ユーザーがホバーして何が切り捨てられているかを確認できるようにしました。
HTML
<div id="stuff">a reallly really really long titleasdfasdfasdfasdfasdfasdfasdfadsf</div>
JS
function cutString(id){
var text = document.getElementById(id).innerHTML;
var charsToCutTo = 30;
if(text.length>charsToCutTo){
var strShort = "";
for(i = 0; i < charsToCutTo; i++){
strShort += text[i];
}
document.getElementById(id).title = "text";
document.getElementById(id).innerHTML = strShort + "...";
}
};
cutString('stuff');
これを試して :)
var mystring = "How do I get a long text string";
mystring = mystring.substring(0,10);
alert(mystring);
これを表示する「長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキストテキストロングテキストロングテキストロングテキストロングテキストロングテキストロングテキストロングテキストロングテキストロングテキストロングテキストロングテキストロングテキストロングテキストロングテキストロングテキストロングテキスト "
に
長いテキスト長いテキスト長い..。
function cutString(text){
var wordsToCut = 5;
var wordsArray = text.split(" ");
if(wordsArray.length>wordsToCut){
var strShort = "";
for(i = 0; i < wordsToCut; i++){
strShort += wordsArray[i] + " ";
}
return strShort+"...";
}else{
return text;
}
};