2011-01-23 10 views
0

オープンソースの正しいツールを作成するために、このプラグインhttp://roy-jin.appspot.com/jsp/textareaCounter.jsphttp://writer.knowconceptdesign.com/に現在使用しています。 Charの制限が0以下の場合、プラグインの文字列置換が返されないように設定されていることを除いて、すべて正常に動作しています。私がしたいことは、文字制限が0以下であれば、 "None"または "No Limit set"を返すことです。jquery動的要素の検索と置換

ここに制限を表示するためのプラグインコードです。

function formatDisplayInfo(){ 
     var format = options.displayFormat; 
     //When maxCharacters <= 0, #max, #left cannot be substituted. 
     if(maxCharacters > 0){ 
      format = format.replace('#left', numLeft); 
     } 
     return format; 

私は私のメインページにこれを上書きしようとしています

$(document).ready(function(){  
var count_options = { 
    'maxCharacterSize': 0, // Just some default value 
    'originalStyle': 'originalDisplayInfo', 
    'warningStyle': 'warningDisplayInfo', 
    'warningNumber': 40, 
    'displayFormat': '#input Characters | #left Characters Left | #words Words' 
}; 

// Initialise the plugin on document ready 
$('#textinput').textareaCount(count_options); 

$('#max_char').keyup(function() { 
    var max_char = +$(this).val(); 

    //if the input is not a valid number 
    if ((isNaN($('#max_char').val())) || ($('#max_char').val() == 0)){ 
    max_char = -1; 
    var char_left = count_options.displayFormat; 
    char_left = char_left.replace('#left', 'No Limit'); 
    count_options.displayFormat = char_left; 
    } 
    count_options.maxCharacterSize = max_char; 



    // Unbind the 3 events the plugin uses before initializing it 
    $('#textinput') 
     .next('.charleft').remove().end() 
     .unbind('keyup').unbind('mouseover').unbind('paste') 
     .textareaCount(count_options); 

}); 

これは私が問題を解決するだろうと思ったブロックです:

if ((isNaN($('#max_char').val())) || ($('#max_char').val() == 0)){ 
max_char = -1; 
var char_left = count_options.displayFormat; 
char_left = char_left.replace('#left', 'No Limit'); 
count_options.displayFormat = char_left; 

関係なく上書きされないようです私がやること。私は簡単な検索と交換でさえも効果があると思います。私はいくつかのプラグインの検索と置換を試みました。

助けがあれば助かります。ここで

はそれを参照してくださいワンタも誰のためのHTMLです:私は(私が持っていることはよく分からないのです)正しくあなたを理解してきたと仮定すると

<textarea cols="68" rows="21" name="textinput" id="textinput"></textarea><br/> 
    <input type="textbox" id="max_char" name="max_char" value="0" /> Max Characters <br/> 

答えて

0

私は、これは次のコードでresovledました:

$('#max_char').keyup(function() { 
var max_char = +$(this).val(); 
var char_left = count_options.displayFormat; 
if (isNaN(max_char) || max_char <= 0){ 
     max_char= -1; 
     char_left = char_left.replace('#left', 'No Limit'); 
     char_left = char_left.replace('Characters Left', ''); 

} 
else{ 
      char_left = char_left.replace('No Limit','#left Characters Left'); 

} 
count_options.maxCharacterSize = max_char; 
count_options.displayFormat = char_left 

UPDATEこれは

if (isNaN(max_char) || max_char <= 0){ 
      max_char= -1; 
      char_left=''; 
      char_left='#input Characters | #words Words'; 

    } 
    else{ 
      char_left=''; 
      char_left='#input of #max Characters | #left Characters Left | #words Words'; 


    } 
+0

私は質問しなければなりません:この 'char_left = ''は何ですか? – polarblau

+0

@polarblau私は知らない、私は本当にjavascriptに新しいです。私は値を設定する前にカウントをnullに "リセット"する必要があると思った。そうでない場合は、私はそれらの行を削除し、何が起こるか見るでしょう。 – BandonRandon

+1

変数を 'リセット 'する必要はありません。新しい値を割り当てると(これは基本的には空の文字列を割り当てることによっても行われます)、古い値はオーバーライドされます。あなたはこれらの行を単に離しておくことができます。 – polarblau

1

、私はあなたができることを推測すると思いますコールバックでこれを解決する - このような何か:

var options = { 
    'maxCharacterSize': 0, 
    'originalStyle': 'originalDisplayInfo', 
    'warningStyle': 'warningDisplayInfo', 
    'warningNumber': 40 
}; 

var format = function(data) { 
    var left = data.left + " Characters Left", 
     maxChar = $('#max_char').val(); 
    if (isNaN(maxChar) || maxChar <= 0) left = "No Limit"; 
    return data.input + " Characters | " + left + " | " + data.words + " Words"; 
}; 

$('#textinput').textareaCount(options, format); 
+0

を交換する必要は単純ではないように思わ私はかなりそれが私の機能にフックするように見えることはできません。 – BandonRandon

+0

説明できますか? – polarblau