Javascript Jquery根据输入值显示输入文本

Javascript Jquery根据输入值显示输入文本,javascript,jquery,text,input,Javascript,Jquery,Text,Input,我在jquery中遇到了基于输入值显示输入文本的问题。 以下是JS fiddle演示: 当我尝试输入@hotmail时,将显示输入框。但当我想在#hotm输入框中键入一些文本时,它会再次隐藏 JS代码: $(window).load(function(){ var myString = '@hotmail'; $('#hotm').hide(); $("input").keyup(function () { var value = $(this).val(); if($(this).

我在jquery中遇到了基于输入值显示输入文本的问题。 以下是JS fiddle演示:

当我尝试输入@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(); 
    }
});

});

这是因为选择器
$(“输入”)
会影响两个输入元素。我将其更新为
$(“输入:第一”)
选择器


你影响了所有的输入。为每个对象指定一个唯一的ID/类,或者使用jQuery$(this)方法

请参见此处的JSFIDLE:


var myString='@hotmail'; $('#secondinput').hide(); $(“#firstinput”).keyup(函数(){ var值=$(this.val(); if($(this.val().match(myString)){ $('#secondinput').show(); }否则{ $('#secondinput').hide(); } });
对您的if部件使用此选项:

if($(this).val().match($(this).val().substr(0,strlen($(this).val())))

这是因为新的框也=“输入”;如果你给hotmail文本框它自己的id,它不会隐藏

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

正如许多人所说,您正在将事件绑定到所有输入上,我做了一些小小的更改:

$(function(){
    var myString = /@hotmail/ig;
    $("#check").bind('keyup checkvalue', function() {
        $('#hotm')[myString.test(this.value) ? 'show' : 'hide']();
    }).trigger('checkvalue');
});
如果您使用的是
@HoTmAil
,则使用regex它也会发现这一点,并且还添加了一个自定义事件
checkvalue
,以查看
#hotm
是否应该在您可能使用的表单上的回发上可见



演示:

检查,非常感谢。。。问题解决了…:)
<input id="hotmail" type="text"/>
$("#hotmail").keyup(function () {...});
$(function(){
    var myString = /@hotmail/ig;
    $("#check").bind('keyup checkvalue', function() {
        $('#hotm')[myString.test(this.value) ? 'show' : 'hide']();
    }).trigger('checkvalue');
});