2013-05-15 117 views
1

我被一个新代码卡住了,我寻求一种智能的单向高效解决方案。 我想要完成类似Twitter的工作,假设我们有两个 type = Text的输入,一旦我们改变了我们的removeAttr(“disabled”,“disables”);或attr(“禁用”,“禁用”),我知道在检查一个字段时很容易完成,但可以说我在字段上进行了更改,接下来我更改了其他字段,并且突然间我决定更改一个字段他们回来,反之亦然,或两者都回到以前的值,以便提交按钮之间更改禁用/启用。jQuery实时检查输入更改

这里是我的jsfiddle:http://jsfiddle.net/Xu9XH/

<input type="text" value="Carl" name="first_name" maxlength="15" id="firstname" /> 
<input type="text" value="Johnson" name="last_name" maxlength="15" id="lastname" /> 
<br /><br /> 
<button id="senddata" disabled="" type="submit">Submit</button> 
+0

不知道。每个()将工作? –

+0

您可以使用'placeholder' HTML5属性来定义默认文本。如果该字段为空,但不是实际值,则会显示该字段。 有关MDN的更多信息https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input#attr-placeholder – nstCactus

+0

不,不,不!测试我的jsfiddle,我从值属性中读取值,因为它在打字时不会改变,但是在文本字段输入中改变它的实际值,而不是值属性,这就是为什么我正在读取值属性并将其存储为旧值以与input.val进行比较。 –

回答

3
var inputs = $('input[type="text"]'), 
    button = $('#senddata'); 

inputs.each(function() { 
    $(this).data('val', this.value); 
}).on('keyup', function() { 
    var state = true; 
    inputs.each(function(i,el) { 
     if ($(el).val() != $(el).data('val')) state = false; 
    }); 
    button.prop('disabled', state); 
}); 

FIDDLE

+0

感谢这个,看起来很有希望,有没有办法动态跟踪字段,就像当前使用的ID一样!可以.each()适用于'keyup'吗? –

+1

@JohnSmith - 就像那样,可以使用任何可用的输入,只需更改顶级选择器等。 – adeneo

+0

非常感谢!你救了我,这是一个非常有效的解决方案,在这里。非常感谢! :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) –