2012-10-23 7 views
10

私は1行のテキストフィールドを持っています。 (入力タイプ= 'テキスト')1行テキストフィールドだけのcodemerror?

私はテキストエリアを持っていません。

このテキストフィールドでは、簡単なDSLに小さな文字列を入力できます。

  • ミラノからロンドン
  • イタリア(ローマ、フィレンツェ)から英国

私はcodemirror

でこのテキストフィールドを置き換えるために考えていたに: は、彼らがこのように見えるあなたのアイデアを与えるために、

私の質問は次のとおりです:

  • 1行分のコードミラーを使用しています良いアイデア ?
  • 誰でもこれを行っていますか?
  • テキストフィールドをもっとカラフルにする方法はありますか?

おかげで、

+0

CodeMirrorはブラウザ内のコード編集ツールではありませんか?あなたの入力フィールドにコードエディタがどのように必要かわかりません。 「カラフル」って何を意味しますか? – nimrod

+0

@nimod:シンタックスハイライト私は推測します。 –

+0

テキストエリアを使用し、その高さを1行に設定できます。それは私にとって「大丈夫」なアプローチのようです。それは確かに悪くないし、あなた自身で何かを構築することはおそらくより困難です。しかし、正しいパーサーが正しく強調表示されるように、言語パーサを作成する必要があります。 –

答えて

13

さてあなたのタグのスタイルを設定でき、CodeMirrorの豊富な機能を使用して単一行エディタを作るための方法があります。 まず、フル機能のCodeMirrorオブジェクトを追加する必要があります(テキストエリアを使用します)。

var cm = CodeMirror(...)とします。 (value: ""を使用)。 はその後

cm.setSize(200, cm.defaultTextHeight() + 2 * 4); 
// 200 is the preferable width of text field in pixels, 
// 4 is default CM padding (which depends on the theme you're using) 

// now disallow adding newlines in the following simple way 
cm.on("beforeChange", function(instance, change) { 
    var newtext = change.text.join("").replace(/\n/g, ""); // remove ALL \n ! 
    change.update(change.from, change.to, [newtext]); 
    return true; 
}); 

// and then hide ugly horizontal scrollbar 
cm.on("change", function(instance, change) { 
    $(".CodeMirror-hscrollbar").css('display', 'none'); 
    // (!) this code is using jQuery and the selector is quite imperfect if 
    // you're using more than one CodeMirror on your page. you're free to 
    // change it appealing to your page structure. 
}); 

// the following line fixes a bug I've encountered in CodeMirror 3.1 
$(".CodeMirror-scroll").css('overflow', 'hidden'); 
// jQuery again! be careful with selector or move this to .css file 

これは私のためだけで正常に動作しません。

+0

nice beforeChange hack、thahks –

+1

すべての変更が更新機能を持っているわけではありません: if(change.update)change.update(change.from、change.to、[newtext]); extraKeys:{"Tab":false、 "Shift-Tab":false、 "Enter":false} – pariesz

+1

ありがとう、これはこれまでの最高の答え。私が知りたかったことはすべてあなたのポストにありました。私を完全に固定しました:) Probは2日間それで逃げ出しました。とても有難い。神はあなたを祝福します:Dまだ4年後に働いています! – danday74

2

誰かがキーを打つとき、あなただけのフィールドで正規表現を実行することができます。

イベントはあなたがちょっとこのような高さ約1ラインでのcontentEditable要素の内容にstr.replace行う起こる:あなたは、コードを必要としないアプローチのようなもののために

var r = /from\s+(\w+)\s+to\s+(\w+)/gi 
s.replace(r, 'from <em>$1</em> to <em class="to">$2</em>'); 

を-editor、そしてあなただけの...これらのクラスで

最も簡単な

+0

は本当にこの提案が好きです...誰かが何か良いものを持っていない限り、私はこれを「正しい」回答としてタグ付けします – Zo72

関連する問題