2013-05-15 82 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

非常感謝!你救了我,這是一個非常有效的解決方案,在這裏。非常感謝! :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) –