JQuery найти и заменить динамический элемент - PullRequest
0 голосов
/ 23 января 2011

В настоящее время я использую этот плагин http://roy -jin.appspot.com / jsp / textareaCounter.jsp в http://writer.knowconceptdesign.com/ в надежде создать инструмент с открытым исходным кодом. Все работает нормально, за исключением того, что, когда предел Char равен 0 или меньше, строка замены плагина установлена ​​на возврат. Я хотел бы вернуть «None» или «No Limit set», если предел символа равен 0 или меньше.

Вот код плагина для отображения ограничения.

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/>

Ответы [ 2 ]

1 голос
/ 23 января 2011

Предполагая, что я вас правильно понял (я не уверен в этом), я бы предположил, что вы можете решить эту проблему с помощью обратного вызова - что-то вроде этого:

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 голосов
/ 24 января 2011

Я получил это с помощью следующего кода:

$('#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

ОБНОВЛЕНИЕ Это кажется проще и не требует замены

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


    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...