2012-04-14 11 views
2

2つの入力テキストフィールドがあります。 1つは記事のタイトルを入力するためのもので、もう1つは記事のパーマリンクのためのものです。私がしたいのは、テキストがタイトルフィールドに挿入されるまでパーマリンクフィールドを無効にして、ユーザーがタイトルフィールドからフォーカスを外したときにスペースをハイフンに置き換え、大文字を小文字にするカスタム正規表現を実行することです。テキストフィールドでのぼかしの使用

<input type="text" id="title" name"title" /> 
<input type="text" id="permalink" name="permalink" /> 
+4

あなたは今まで自分自身で何を考えていますか? – sg3s

+0

まあ私はjqueryのぼかし関数のためのドキュメントを探していますが、私はそれが私が使用する必要があり、それの外に誰かがこれに遠く離れて使用されていると私は何かを見ていないかどうかを見て探しているオンライン。 –

答えて

6

それは...

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のと本当簡単です。

あなたは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*プロパティを割り当てることです。これにより、そこに割り当てられた以前のプロパティが上書きされます。

古代のブラウザで複数のイベントを登録したい場合は、必要に応じて複数のイベントを登録してトリガしたカスタムハンドラを使用するようにプロパティの割り当てを変更します。

+1

+1このコードの効率は、permalinkが一度だけ使用されるので、変数である必要はありません。 – sg3s

+1

@ sg3s各 'change'イベントで不必要に*選択されます*。 – alex

+0

修正。注意を払っていなかったと思います:) – sg3s

関連する問題