如何使用jQuery访问输入字段文本?

时间:2009-06-03 13:19:35

标签: javascript jquery

我正在尝试使用jQuery的typeWatch插件。我有这个javascript:

 <script type="text/javascript">
 $(document).ready(function() {
   var options = {
        callback: function() { alert("a-ok!  " + $(this).text); },
        wait: 333,
        highlight: true,
        captureLength: 1
    }

    $("#customer").typeWatch(options);
 });
 </script>

我的观点的HTML有这个:

 Method B: <%= Html.TextBox("customer") %>

通过此测试,如果我在文本框中键入“ABC”,我希望弹出“a-ok!ABC”的警告。相反,以下显示......

a-ok!  function (F) {
    if (typeof F !== "object" && F != null) {
        return this.empty().append((this[0] && this[0].ownerDocument || 
               document).createTextNode(F));
    }
    var E = "";
    o.each(F || this, function () {o.each(this.childNodes, function () {
          if (this.nodeType != 8) {
             E += this.nodeType != 1 ? this.nodeValue : o.fn.text([this]);}});});
   return E;
}

我已经尝试将$(this).text更改为.val,并且我还尝试将输入字段更直接地引用为$(“#customer”),但它们会产生类似的结果。如何只访问输入的文本?

2 个答案:

答案 0 :(得分:5)

您应该在文本框中使用val()函数:

$(this).val();

答案 1 :(得分:1)

查看typeWatch版本2.0的代码,我发现了这个:

    function checkElement(timer, override) {
        var elTxt = jQuery(timer.el).val(); <----------- !!! this...

        // Fire if text > options.captureLength AND text != saved txt OR if override AND text > options.captureLength
        if ((elTxt.length > options.captureLength && elTxt.toUpperCase() != timer.text) 
        || (override && elTxt.length > options.captureLength)) {
            timer.text = elTxt.toUpperCase();
            timer.cb(elTxt); <-------------- !!! ...goes here.
        }
    };

timer.cb是您在选项中设置的回调。因此,您只需在您使用的回调函数中添加一个参数,该参数将是输入中的文本。