2009-06-03 6 views
0

Я пытаюсь использовать плагин typeWatch для jQuery. У меня есть этот JavaScript:Как получить доступ к тексту поля ввода с помощью jQuery?

<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» в текстовом поле, я ожидал предупреждение для вызова с «а -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; 
} 

Я попытался изменить $ (это) .text к .val, и я также попытался ссылки на поле ввода более непосредственно, как $ («# клиент»), но они дают аналогичные результаты. Как я могу получить доступ только к введенному тексту?

+0

Причина, по которой вы возвращаете текстовое представление функции, заключается в том, что вы не вызываете функцию с использованием парен ... текст должен быть текстовым ***() *** – cgp

+0

Я не могу ответить :( – cgp

ответ

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 является обратный вызов, который вы установили в вариантах. Таким образом, вы просто добавляете параметр в эту функцию обратного вызова, который вы используете, и этот параметр будет текстом на входе.

+0

sweet! благодаря! я продолжал пробовать разные варианты другого ответа, поскольку 4 человека быстро его поддержали, но ничего не работало. это работало как шарм. –

5

Вы должны использовать функцию Val() на текстовое поле:

$(this).val(); 
+0

Я подозреваю, что это, как правило, правильный ответ, но я не мог заставить его работать по какой-то причине. Поскольку Лукас решил мою проблему, он получил ответ, но +1 к этому, так как его, вероятно, правильный ответ 99% времени. –

+0

Для этого вам нужен Лукас специалист типаWatch;). Надеюсь, вы помните мой -broader-tip: $ (elem) .val() not .text! (работает для каждого входного поля html) hehe – Ropstah