【问题标题】:jquery return value of input to var输入到var的jquery返回值
【发布时间】:2011-01-23 03:55:41
【问题描述】:

我正在尝试使变量等于文本框的值。我将文本框值设置为一个变量并作为警报返回(目前),但我不知道如何从其他函数调用该变量。

$('#max_char').keyup(function () {
    var max_char = $(this).val();
    alert(max_char + ' Handler for .keyup() called.');
});

var count_options = {
    'maxCharacterSize': max_char,
    'originalStyle': 'originalDisplayInfo',
    'warningStyle': 'warningDisplayInfo',
    'warningNumber': 40,
    'displayFormat': '#input Characters | #left Characters Left | #words Words'
};

$('#textinput').textareaCount(count_options);
});

HTML

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

任何帮助都会很棒。尝试将 var max_char 添加到 count_options 的 maxCharacterSize

【问题讨论】:

    标签: javascript jquery textbox onkeyup


    【解决方案1】:

    您需要做的就是在更高的范围内声明max_char,即在keyup函数的外部

    var max_char;
    
    $('#max_char').keyup(function () {
        max_char = +$(this).val();
        alert(max_char + ' Handler for .keyup() called.');
    });
    

    还请注意,我在$(this).val() 前面放了一个+ 以将其从字符串转换为数字,因为"1" + 1 == "11"


    更新

    textareaCount 插件不工作的原因是因为它在文档准备就绪时被初始化一次。此时,max_char 什么都不是,因为用户还没有输入任何内容。

    您必须在每次按键时重新配置或重新初始化插件才能获得您想要的效果。不幸的是,该插件没有记录一个简单的方法来做到这一点。在挖掘插件的源代码之后,我认为它绑定的只有 3 个事件需要还原,然后才能简单地重新初始化它。试试这个:

    var count_options = {
        'maxCharacterSize': 100, // 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();
        count_options.maxCharacterSize = max_char;
    
        // Unbind the 3 events the plugin uses before initialising it
        $('#textinput')
            .next('.charleft').remove().end()
            .unbind('keyup').unbind('mouseover').unbind('paste')
            .textareaCount(count_options);
    });
    

    【讨论】:

    • 嗯......这仍然不适合我。不知道是不是插件问题roy-jin.appspot.com/jsp/textareaCounter.jsp
    • @Bandon,我想我找到了问题所在。请参阅我的更新答案。
    • 这行得通,但每次按键都会重新初始化值并添加一个新行“#input Characters | #left Characters Left | #words Words”也许我会尝试另一个插件。我没有设置这个,只是我找到的第一个。
    • 对于演示,请参见此处:writer.knowconceptdesign.com 它似乎也将 max_chars 绑定到活动输入后面。
    • @Bandon,你可以做两件事:一是你把修改count_options.maxCharacterSize的代码放在调用.textareaCount(count_options)的代码之后——它应该在它之前。您还可以删除插件使用的div,这样就不会创建重复项。我已经修改了我的代码以显示这一点。
    【解决方案2】:

    如果我理解正确,如果您在 javascript 的全局范围内声明 var

    或者如果您直接使用

    访问输入
    $("#max_char").val()
    

    【讨论】:

    • +1,我没有意识到可能不需要整个 keyup 绑定。
    • 我在 keyup 上使用了 bind 来确保它随着用户输入而动态变化。
    【解决方案3】:
    parseInt($('#max_char').val())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-14
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      相关资源
      最近更新 更多