jQueryを使えば本当に簡単です...
var permalinkInput = $('#permalink');
$('#title').change(function() {
permalinkInput.prop('disabled', !$(this).val());
}).change().blur(function() {
$(this).val(function(i, value) {
return value.replace(/\s+/g, '-').toLowerCase();
});
});
jsFiddle .
jQuery を持っていなくても、標準に準拠した最新のブラウザーをサポートするだけでよい場合は、次のようになります。
var permalinkInput = document.querySelector('#permalink'),
titleInput = document.querySelector('#title');
permalinkInput.disabled = true;
titleInput.addEventListener('change', function() {
permalinkInput.disabled = !titleInput.value;
}, false);
titleInput.addEventListener('blur', function() {
titleInput.value = titleInput.value.replace(/\s+/g, '-').toLowerCase();
});
jsFiddle .
あなたが jQuery を持っておらず、古い IEの友人をサポートしなければならなかった場合、それは次のようになります...
var permalinkInput = document.getElementById('permalink'),
titleInput = document.getElementById('title');
var addEvent = function(element, type, callback) {
if (element.addEventListener) {
element.addEventListener(type, callback, false);
} else if (element.attachEvent) {
element.attachEvent('on' + type, callback);
} else {
element['on' + type] = callback;
}
}
permalinkInput.disabled = true;
addEvent(titleInput, 'change', function() {
permalinkInput.disabled = !titleInput.value;
});
addEvent(titleInput, 'blur', function() {
titleInput.value = titleInput.value.replace(/\s+/g, '-').toLowerCase();
});
jsFiddle .
イベント登録の古いフォールバックは、on*
プロパティを割り当てることであることに注意してください。これにより、そこに割り当てられていた以前のプロパティが上書きされます。
これらの古いブラウザーに複数のイベントを登録したい場合は、必要に応じて複数のイベントを登録してトリガーするカスタム ハンドラーを使用するようにプロパティの割り当てを変更します。