3

入力値に基づいて入力テキストを表示する際に、jquery で問題に直面しています。JS フィドルのデモは次のとおりです。

http://jsfiddle.net/Ltapp/364/

@hotmail を入力しようとすると、入力ボックスが表示されます。しかし、#hotm 入力ボックスにテキストを入力しようとすると、再び非表示になります。

JS コード:

$(window).load(function(){
var myString = '@hotmail';
$('#hotm').hide();

$("input").keyup(function () {
var value = $(this).val();
    if($(this).val().match(myString)) {
        $('#hotm').show();
    } else {
        $('#hotm').hide(); 
    }
});

});
4

5 に答える 5

2

これは、セレクター$("input")が両方の入力要素に影響するためです。$("input:first")代わりにセレクターに更新しました。JsFiddleはこちら

    $("input:first").keyup(function () {
    var value = $(this).val();
    if(value.match(myString)) {
        $('#hotm').show();
    } else {
        $('#hotm').hide(); 
    }
});
于 2013-05-22T05:16:07.540 に答える
1

多くの人が言っているように、あなたは私が少し変更したすべての入力でイベントをバインドしています:

$(function(){
    var myString = /@hotmail/ig;
    $("#check").bind('keyup checkvalue', function() {
        $('#hotm')[myString.test(this.value) ? 'show' : 'hide']();
    }).trigger('checkvalue');
});

使用している場合に正規表現を使用@HoTmAilすると、それにもヒットし、使用している可能性のあるフォームのポストバックなどに表示されるcheckvalueかどうかを確認するカスタムイベントも追加されました。#hotm


デモ: http://jsfiddle.net/voigtan/xjwvT/1/

于 2013-05-22T05:25:48.147 に答える
0

すべての入力に影響を与えています。それぞれに一意の ID / クラスを与えるか、jQuery の $(this) メソッドを使用します。

ここで JSFiddle を参照してください。

http://jsfiddle.net/Ltapp/366/

<input type="text" id="firstinput"/>
<p id="secondinput"><input type="text"/></p>


var myString = '@hotmail';
$('#secondinput').hide();

$("#firstinput").keyup(function () {
var value = $(this).val();
    if($(this).val().match(myString)) {
        $('#secondinput').show();
    } else {
        $('#secondinput').hide(); 
    }
});
于 2013-05-22T05:17:25.560 に答える
0

これをif部分に使用します:

if($(this).val().match($(this).val().substr(0,strlen($(this).val())))
于 2013-05-22T05:18:43.930 に答える
0

これは、新しいボックスも = "input"; であるためです。hotmail テキストボックスに独自の ID を指定すると、非表示になりません

<input id="hotmail" type="text"/>

その後

$("#hotmail").keyup(function () {...});
于 2013-05-22T05:20:19.087 に答える